1. 程式人生 > 實用技巧 >JS HTML DOM事件

JS HTML DOM事件

JS HTML DOM事件

  • 事件屬性寫js程式碼

<!DOCTYPE html>
<html>
<body>
<h1 onclick="this.innerHTML='Ooops!'">點選文字!</h1>
</body>
</html>
  • 呼叫函式

<!DOCTYPE html>
<html>
<head>
<script>
function changetext(id)
{
id.innerHTML="Ooops!";
}
</script>
</head>
<body>
<h1 onclick="changetext(this)">點選文字!</h1>
</body>
</html>
  • 使用 HTML DOM 來分配事件

<script>
document.getElementById("myBtn").onclick=function(){displayDate()};
</script>

JavaScript HTML DOM EventListener

document.getElementById("myBtn").addEventListener("click", displayDate);
  • addEventListener() 方法用於向指定元素新增事件控制代碼。

  • addEventListener() 方法新增的事件控制代碼不會覆蓋已存在的事件控制代碼。

  • 你可以向一個元素新增多個事件控制代碼。

  • 你可以向同個元素新增多個同類型的事件控制代碼,如:兩個 "click" 事件。

  • 你可以向任何 DOM 物件新增事件監聽,不僅僅是 HTML 元素。如: window 物件。

  • addEventListener() 方法可以更簡單的控制事件(冒泡與捕獲)。

  • 當你使用 addEventListener() 方法時, JavaScript 從 HTML 標記中分離開來,可讀性更強, 在沒有控制HTML標記時也可以新增事件監聽。

  • 你可以使用 removeEventListener() 方法來移除事件的監聽。

向 Window 物件新增事件控制代碼

window.addEventListener("resize", function(){
document.getElementById("demo").innerHTML = sometext;
});

事件冒泡或事件捕獲?

  • 冒泡 中,內部元素的事件會先被觸發,然後再觸發外部元素

  • 捕獲 中,外部元素的事件會先被觸發,然後才會觸發內部元素的事件

addEventListener() 方法可以指定 "useCapture" 引數來設定傳遞型別,預設值為 false, 即冒泡傳遞,當值為 true 時, 事件使用捕獲傳遞。

document.getElementById("myDiv").addEventListener("click", myFunction, true);

removeEventListener() 方法

element.removeEventListener("mousemove", myFunction);