最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用JavaScript操作DOM節(jié)點事件的具體方案

 更新時間:2026年01月28日 08:39:56   作者:好大哥呀  
文章介紹了HTML中事件綁定的三種方式(行內(nèi)綁定、DOM屬性綁定、addEventListener),推薦使用addEventListener,因為它支持多函數(shù)綁定和事件傳播控制,文章還講解了事件解綁和事件對象的使用,并通過示例展示了如何在實際開發(fā)中應用這些知識,需要的朋友可以參考下

一、核心:事件綁定的 3 種方式(推薦第 3 種)

事件綁定是操作 DOM 事件的基礎(chǔ),核心是「給 DOM 節(jié)點關(guān)聯(lián)一個觸發(fā)后執(zhí)行的函數(shù)」,以下是從易到難、從舊到新的 3 種方式:

1. 行內(nèi)綁定(最原始,不推薦)

直接在 HTML 標簽里寫on+事件名,把 JS 代碼寫在標簽里,耦合性高,不利于維護。

<!-- 行內(nèi)綁定點擊事件 -->
<button onclick="alert('點擊了按鈕')">按鈕1</button>

<!-- 也可以調(diào)用外部函數(shù) -->
<button onclick="handleClick()">按鈕2</button>

<script>
  function handleClick() {
    console.log('按鈕2被點擊');
  }
</script>

2. DOM 屬性綁定(簡單,但有缺陷)

通過 JS 給 DOM 節(jié)點的on+事件名屬性賦值,缺點是一個事件只能綁定一個處理函數(shù)(后綁定的會覆蓋前一個)。

<button id="btn3">按鈕3</button>

<script>
  const btn3 = document.getElementById('btn3');
  // 綁定點擊事件
  btn3.onclick = function() {
    console.log('第一次綁定的點擊事件');
  };
  // 后綁定的會覆蓋前一個
  btn3.onclick = function() {
    console.log('第二次綁定的點擊事件(覆蓋了之前的)');
  };
</script>

3. addEventListener(推薦,標準方式)

這是 W3C 標準的事件綁定方式,支持一個事件綁定多個處理函數(shù),還能控制事件傳播方式,是開發(fā)中最常用的。語法:dom節(jié)點.addEventListener(事件名, 處理函數(shù), 可選參數(shù));

  • 事件名:不帶on(比如click而非onclick);
  • 處理函數(shù):觸發(fā)事件后執(zhí)行的函數(shù);
  • 可選參數(shù):布爾值(false= 冒泡階段觸發(fā),默認;true= 捕獲階段觸發(fā)),或配置對象。
<button id="btn4">按鈕4</button>

<script>
  const btn4 = document.getElementById('btn4');
  // 綁定第一個點擊事件
  btn4.addEventListener('click', function() {
    console.log('點擊事件1');
  });
  // 綁定第二個點擊事件(不會覆蓋,會依次執(zhí)行)
  btn4.addEventListener('click', function() {
    console.log('點擊事件2');
  });

  // 也可以綁定其他事件(如鼠標移入、移出)
  btn4.addEventListener('mouseenter', function() {
    btn4.style.backgroundColor = 'pink';
  });
  btn4.addEventListener('mouseleave', function() {
    btn4.style.backgroundColor = '';
  });
</script>

二、事件解綁:移除已綁定的事件

綁定的事件如果不再需要,要及時解綁,避免內(nèi)存泄漏,不同綁定方式的解綁方法不同:

1. 解綁 DOM 屬性綁定的事件

直接把on+事件名賦值為null即可:

const btn3 = document.getElementById('btn3');
btn3.onclick = null; // 解綁點擊事件

2. 解綁 addEventListener 綁定的事件

注意:必須使用「綁定時候的同一個函數(shù)引用」(匿名函數(shù)無法解綁)!

<button id="btn5">按鈕5</button>

<script>
  const btn5 = document.getElementById('btn5');
  // 先定義具名函數(shù)(不能用匿名函數(shù))
  function handleBtn5Click() {
    console.log('按鈕5被點擊');
  }
  // 綁定事件
  btn5.addEventListener('click', handleBtn5Click);
  // 解綁事件(用同一個函數(shù))
  btn5.removeEventListener('click', handleBtn5Click);
</script>

三、事件對象:獲取事件的詳細信息

事件處理函數(shù)會自動接收一個「事件對象(通常命名為e/evt)」,里面包含觸發(fā)事件的所有信息(比如點擊位置、觸發(fā)元素、是否按了快捷鍵等),是開發(fā)的核心工具。

<button id="btn6">按鈕6</button>
<div id="box" style="width: 200px; height: 200px; background: #eee;"></div>

<script>
  // 1. 點擊按鈕:獲取事件信息
  const btn6 = document.getElementById('btn6');
  btn6.addEventListener('click', function(e) {
    console.log('觸發(fā)事件的元素:', e.target); // 觸發(fā)事件的DOM節(jié)點(按鈕本身)
    console.log('點擊的坐標(相對于頁面):', e.pageX, e.pageY);
    console.log('是否按了Ctrl鍵:', e.ctrlKey);
  });

  // 2. 常用:阻止默認行為(比如阻止a標簽跳轉(zhuǎn)、表單提交)
  const a = document.createElement('a');
  a.;
  a.textContent = '百度鏈接(點了不跳轉(zhuǎn))';
  document.body.appendChild(a);
  a.addEventListener('click', function(e) {
    e.preventDefault(); // 阻止默認行為(跳轉(zhuǎn))
    console.log('點擊了鏈接,但沒跳轉(zhuǎn)');
  });

  // 3. 常用:阻止事件冒泡(避免父元素觸發(fā)相同事件)
  const box = document.getElementById('box');
  box.addEventListener('click', function() {
    console.log('點擊了div');
  });
  btn6.addEventListener('click', function(e) {
    e.stopPropagation(); // 阻止事件冒泡到div
    console.log('點擊了按鈕,不會觸發(fā)div的點擊事件');
  });
</script>

四、常用場景示例

1. 點擊按鈕切換元素樣式

<p id="text">Hello DOM</p>
<button id="toggleBtn">切換樣式</button>

<script>
  const text = document.getElementById('text');
  const toggleBtn = document.getElementById('toggleBtn');
  
  toggleBtn.addEventListener('click', function() {
    text.classList.toggle('active'); // 切換active類
  });
</script>
<style>
  .active {
    color: red;
    font-size: 20px;
    font-weight: bold;
  }
</style>

2. 輸入框?qū)崟r監(jiān)聽輸入內(nèi)容

<input type="text" id="input" placeholder="輸入內(nèi)容...">
<p id="preview"></p>

<script>
  const input = document.getElementById('input');
  const preview = document.getElementById('preview');
  
  // 監(jiān)聽輸入事件(input)
  input.addEventListener('input', function(e) {
    preview.textContent = `你輸入了:${e.target.value}`;
  });
</script>

總結(jié)

  1. 事件綁定優(yōu)先用addEventListener:支持多函數(shù)綁定,功能更全;
  2. 事件對象是核心:通過e.target找觸發(fā)元素、e.preventDefault()阻止默認行為、e.stopPropagation()阻止冒泡;
  3. 解綁事件要注意addEventListener綁定的事件必須用具名函數(shù)才能解綁,避免內(nèi)存泄漏。

以上就是使用JavaScript操作DOM節(jié)點事件的具體方案的詳細內(nèi)容,更多關(guān)于JavaScript操作DOM節(jié)點事件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

册亨县| 高州市| 汪清县| 岑溪市| 改则县| 时尚| 嘉兴市| 通许县| 湾仔区| 阜平县| 固阳县| 如皋市| 杭锦后旗| 会理县| 芮城县| 东乡族自治县| 泽州县| 新晃| 曲阳县| 财经| 福贡县| 金堂县| 沙洋县| 长兴县| 工布江达县| 鸡西市| 阿瓦提县| 左贡县| 合川市| 安溪县| 西藏| 同心县| 柳江县| 南通市| 桐梓县| 金门县| 会宁县| 南充市| 都安| 璧山县| 澎湖县|