JS-DOM事件

来源:https://www.cnblogs.com/chenyingying0/archive/2019/12/31/12123878.html
-Advertisement-
Play Games

JS DOM設置元素屬性 設置id為box的這個元素的文字顏色,屬性是減號連接的複合形式時 必需要轉換為駝峰形式 var box=document.getElementById("box"); box.style.color='#f00'; box.style.fontWeight="bold"; ...


JS DOM設置元素屬性

設置id為box的這個元素的文字顏色,屬性是減號連接的複合形式時

必需要轉換為駝峰形式

       var box=document.getElementById("box");
       box.style.color='#f00';
       box.style.fontWeight="bold";
       var lis=document.getElementById("list").getElementsByTagName("li");
       // 遍歷每一個li
       for(var i=0,len=lis.length;i<len;i++){
          lis[i].style.color='#00f';
          if(i==0){
             lis[i].style.backgroundColor="#ccc";
          }else if(i==1){
             lis[i].style.backgroundColor="#666";
          }else if(i==2){
             lis[i].style.backgroundColor="#999";
          }else{
               lis[i].style.backgroundColor="#333";
          }
       }

innerHTML獲取和設置標簽之間的文本和html內容

className重新設置類,會替換掉原來的類

如果元素有多個class屬性值,那麼會全部獲取到

       var lis=document.getElementById("list").getElementsByTagName("li");
       for(var i=0,len=lis.length;i<len;i++){
           console.log(lis[i].innerHTML);
           lis[i].innerHTML+='程式';
           lis[1].className="current";
       }
       console.log(document.getElementById("box").className);

屬性設置與獲取

        var p=document.getElementById("text");
        var user=document.getElementById("user");  // null
        console.log(p.getAttribute("class"));  //p.className
        console.log(user.getAttribute("validate"));
        // 給p設置一個data-color的屬性
        p.setAttribute("data-color","red");
        // 給input設置一個isRead的屬性
        user.setAttribute("isRead","false");
        // 刪除p上的align屬性
        p.removeAttribute("align");

JS事件:

 

滑鼠事件

onload 頁面載入

onclick 滑鼠點擊

onmouseover 滑鼠劃入

onmouseout 滑鼠離開

onmousemove 滑鼠在目標內移動

onfocus 獲得焦點

onblur 失去焦點

onchange 內容改變時

 


 

在事件觸發函數中,this是指對該DOM元素的引用

    <input type="button" value="彈 出" onclick="alert('我是按鈕')">
    <!--滑鼠划過按鈕時調用mouseoverFn的函數-->
    <div class="btn" onmouseover="mouseoverFn(this,'#f00')" onmouseout="mouseoutFn(this,'#ff0')">開始</div>
    <div class="btn" onmouseover="mouseoverFn(this,'#0f0')" onmouseout="mouseoutFn(this,'#333')">結束</div>
    <script>
        function mouseoverFn(btn,bgColor){
            // 滑鼠划過按鈕時,按鈕的背景變為紅色
            btn.style.background=bgColor;
        }
        function mouseoutFn(btn,bgColor){
            btn.style.background=bgColor;
        }

DOM 0級

通過DOM獲取元素

元素.事件=腳本

執行腳本可以是一個匿名函數,也可以直接調用函數,如果調用函數,語法是:ele.事件=函數名,不加括弧

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>demo</title>
    <style>
       .lock{width:140px;height:30px;line-height: 30px;background:#00f;
           color:#fff;font-size:14px;text-align:center;border-radius:5px;
           cursor:pointer;margin-top:30px;}
           .unlock{width:140px;height:30px;line-height: 30px;background:#666;
               color:#ccc;font-size:14px;text-align:center;border-radius:5px;
               cursor:pointer;margin-top:30px;}
    </style>
</head>
<body>
    <div class="lock" id="btn">鎖定</div>
    <script>
        // 獲取按鈕
        var btn=document.getElementById("btn");
        function clickBtn(){
           alert("我是按鈕");
        }
        // 點擊按鈕調用clickBtn這個函數
        btn.onclick=clickBtn;
        // 給按鈕綁定事件,this是對該DOM元素的引用
        btn.onclick=function(){
           // 判斷如果按鈕是鎖定,則顯示為解鎖,變為灰色,否則顯示為鎖定,變為藍色
           if(this.className=="lock"){
               this.className="unlock";
               this.innerHTML="解鎖";
           }else{
               this.className="lock";
               this.innerHTML="鎖定";
           }
        }
    </script>
</body>
</html>

window.onload會在網頁中的所有元素(文本、圖像、CSS樣式等)載入完後才觸發執行

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script>
    // 頁面載入時執行,unload頁面卸載
       // 如果不加window.onload,那麼執行腳本時會找不到div元素
       window.onload=function(){
            // 獲取box
            var box=document.getElementById("box");
            var clicked=function(){
                  alert('我被點擊了');
            }
            box.onclick=clicked;
       }
    </script>
</head>
<body>
    <div id="box">這是一個DIV</div>
</body>
</html>

change事件,一般作用域select或checkbox或radio

menu.selectedIndex 獲取select中被選中的元素的下標

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script>
       // 頁面載入
       window.onload=init;

       // 初始化
       function init(){
          // 獲取下拉菜單
          var menu=document.getElementById("menu");
          // 給菜單綁定change事件,一般作用域select或checkbox或radio
          menu.onchange=function(){
             // 獲取當前選中的值
             //var bgcolor=this.value;
             var bgcolor=menu.options[menu.selectedIndex].value;
             // 如果bgcolor為空,則下麵的腳本將不執行
             // if(bgcolor=="")return;
             // 設置body的背景色
             // 如果bgcolor為空,則將背景色設為白色,否則是選擇的顏色
             if(bgcolor==""){
                document.body.style.background="#fff";
             }else{
                 document.body.style.background=bgcolor;
             }
          }
       }
    </script>
</head>
<body>
    <div class="box">
        請選擇您喜歡的背景色:
        <select name="" id="menu">
            <option value="">請選擇</option>
            <option value="#f00">紅色</option>
            <option value="#0f0">綠色</option>
            <option value="#00f">藍色</option>
            <option value="#ff0">黃色</option>
            <option value="#ccc">灰色</option>
        </select>
    </div>
</body>
</html>

滑鼠事件:

onsubmit 表單提交

onmousedown 滑鼠按下

onmousemove 滑鼠移動

onmouseup 滑鼠鬆開

onresize 瀏覽器視窗大小調整

onscroll 拖動滾動條

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
       body{height:2000px;}
       .box{width:200px;height:200px;background:#f00;overflow:auto;}
    </style>
</head>
<body>
    <div class="box" id="box">
        <p>拖動</p>
        <p>拖動</p>
        <p>拖動</p>
        <p>拖動</p>
        <p>拖動</p>
        <p>拖動</p>
        <p>拖動</p>
        <p>拖動</p>
        <p>拖動</p>
        <p>拖動</p>
    </div>
    <script>
       var box=document.getElementById("box");
       // 綁定按下的事件
       box.onmousedown=function(){
             console.log("我被按下了");
       }
       // 綁定移動的事件
       box.onmousemove=function(){
             console.log("我被移動了");
       }
       // 綁定鬆開的事件
       box.onmouseup=function(){
             console.log("我被鬆開了");
       }
       // 綁定點擊的事件
       box.onclick=function(){
             console.log("我被點擊了");
       }
       // 瀏覽器視窗尺寸發生改變時
       window.onresize=function(){
             console.log("我的尺寸被改變了");
       }
       // 拖動滾動條
       window.onscroll=function(){
             console.log("我被拖動了");
       }
       box.onscroll=function(){
             console.log("我是DIV的滾動條");
       }
    </script>
</body>
</html>

鍵盤事件:

onkeydown 按下鍵盤

onkeypress按下鍵盤(只有字母和數字元號)

onkeyup 鬆開鍵盤

keyCode 返回鍵碼或者字元代碼

 

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
       .text span{font-weight:bold;color:#f00;}
       em{font-style:normal;}
       b{font-weight:normal;}
    </style>
</head>
<body>
    <div>
        <p class="text">
            <b id="showcount">您還可以輸入</b>
            <span id="totalbox"><em id="count">30</em>/30</span>
        </p>
        <div class="input">
            <textarea name="" id="text" cols="70" rows="4"></textarea>
        </div>
    </div>
    <script>
       // 獲取文本框及其他元素
       var text=document.getElementById("text");
       var total=30;
       var count=document.getElementById("count");
       var showcount=document.getElementById("showcount");
       var totalbox=document.getElementById("totalbox");
       // 綁定鍵盤事件
       document.onkeyup=function(){
             // 獲取文本框值的長度
             var len=text.value.length;
             // 計算可輸入的剩餘字元
             var allow=total-len;
             var overflow=len-total;
             // 如果allow小於0
             if(allow<0){
              showcount.innerHTML="您已超出"+overflow;
              totalbox.innerHTML='';
             }else{
                   showcount.innerHTML='您還可以輸入';
                   totalbox.innerHTML='<em id="count">'+allow+'</em>/30';
             }
       }
    </script>
</body>
</html>


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Filter 對於WEB應用來說,過濾器是一個駐留在伺服器中的WEB組件,他可以截取客戶端和WEB資源之間的請求和響應信息。 在一個WEB應用中可以部署多個過濾器,多個過濾器就組成了一個過濾器鏈,請求和響應必須在經過多個過濾器後才能到達目標 當配置多個Filter以後就有一個執行順序的問題,實際執行 ...
  • [//]: ( Vue學習 Day01) 介紹 這個系列記錄自己學習Vue的過程. Vue官方 不推薦 新手直接使用 ,所以前面這幾天都是根據 "官方文檔" 學習. 步驟 1. 新建一個 文件. 2. 在html中導入vue.js依賴. firstvue 3. 現在就可以照著官方的例子學習了. 例子 ...
  • 在過去,要洗一個人的腦是比較麻煩的一件事。比如一些保險、直銷等等,要先把人騙去一些閉塞的地方,主持人說得口乾舌燥,又唱又哭,或許也還未能將你洗腦成功。 而現在,洗一個人的腦何需那麼麻煩,隨著你的信息被越來越多的人掌握,隨時被各種平臺監控,這些比你自己還瞭解自己的利益資本,隨時掌握著你的一舉一動,更可 ...
  • css3新增屬性有哪些?來提問這個問題的人都應該知道css3是css的升級版本,那麼,css3既然是升級版本,自然是會新增一些屬性,接下來本篇文章將給大家介紹關於css3中常用的新增屬性。 一、css3新增邊框屬性 1、css3新增屬性之border-color:為邊框設置多種顏色 p { bord ...
  • 我所遇到的前端程式員分兩種: 第一種一直在問:如何學習前端? 第二種總說:前端很簡單,就那麼一點東西。 我從沒有聽到有人問:如何做一名優秀、甚至卓越的WEB前端工程師。 如何成為一名優秀的web前端工程師 何為:前端工程師? 前端工程師,也叫Web前端開發工程師。他是隨著web發展,細分出來的行業。 ...
  • JS BOM window對象 全局變數和全局方法都歸在window上 alert-comfirm-prompt 讓alert 、confirm等彈出框上的提示文字實現換行:\n // confirm() // 點擊確定返回true,取消返回false var btn=document.getEle ...
  • 通過自調用函數產生一個隨機數對象, 在自調用函數外面, 調用該隨機數對象方法產生隨機數 把隨機數對象暴露給window成為全局對象 全局變數 自調用一個函數 創建一個空的隨機構造函數,給原型對象添加方法,window.Random=Random; 再實例化,調用 <script> //通過自調用函數 ...
  • 如何把局部變數變成全局變數? 把局部變數給window就可以了 函數的自調用 自調用函數 一次性的函數--聲明的同時, 直接調用了 (function () { console.log("函數"); })(); 局部變數 頁面載入後.這個自調用函數的代碼就執行完了 (function (形參) { ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...