家一定遇到過在for循環(huán)中創(chuàng)建html元素,并且綁定事件的情況,
實際的效果,發(fā)現(xiàn)最后一個元素的事件將會覆蓋前面所有元素的事件,如下面的代碼:
for (int i=0; i < 10; i++) {
var p=$("<p></p>");
p.html(i);
var url="http://localhost/p?id="+i;
p.click(function(){
window.open(url);
});
$("body").append(p);
}
以上代碼,目測看沒有什么問題,但是實際情況是,所有的p元素的click事件都是相同了,最后一次的事件覆蓋了前面所有的事件,
url都變成了最后一次的,這應該是jquery的一個bug
那應該如何解決呢?
我稍作調整,改成以下的就可以了
for (int i=0; i < 10; i++) {
var p=$("<p></p>");
p.html(i);
var url="http://localhost/p?id="+i;
p.attr("url",url);
p.click(function(){
window.open($(this).attr("url"));//此處不能直接寫url
});
$("body").append(p);
}
這樣,每個p標簽的事件都是獨立的了。
網上看了聽說可以使用數(shù)組的方法解決,希望有更優(yōu)雅的解決方法,希望大家評論區(qū)討論貢獻
HTML DOM 使 JavaScript 有能力對 HTML 事件做出反應。
實例
Mouse Over Me
Click Me
對事件做出反應
我們可以在事件發(fā)生時執(zhí)行 JavaScript,比如當用戶在 HTML 元素上點擊時。
如需在用戶點擊某個元素時執(zhí)行代碼,請向一個 HTML 事件屬性添加 JavaScript 代碼:
onclick=JavaScript
HTML 事件的例子:
當用戶點擊鼠標時
當網頁已加載時
當圖像已加載時
當鼠標移動到元素上時
當輸入字段被改變時
當提交 HTML 表單時
當用戶觸發(fā)按鍵時
在本例中,當用戶在 <h1> 元素上點擊時,會改變其內容:
實例
<!DOCTYPE html>
<html>
<body>
<h1 onclick="this.innerHTML='Ooops!'">點擊文本!</h1>
</body>
</html>
本例從事件處理器調用一個函數(shù):
實例
<!DOCTYPE html>
<html>
<head>
<script>
function changetext(id)
{
id.innerHTML="Ooops!";
}
</script>
</head>
<body>
<h1 onclick="changetext(this)">點擊文本!</h1>
</body>
</html>
HTML 事件屬性
如需向 HTML 元素分配 事件,您可以使用事件屬性。
實例
向 button 元素分配 onclick 事件:
<button onclick="displayDate()">點這里</button>
在上面的例子中,名為 displayDate 的函數(shù)將在按鈕被點擊時執(zhí)行。
使用 HTML DOM 來分配事件
HTML DOM 允許您使用 JavaScript 來向 HTML 元素分配事件:
實例
向 button 元素分配 onclick 事件:
<script>
document.getElementById("myBtn").onclick=function(){displayDate()};
</script>
在上面的例子中,名為 displayDate 的函數(shù)被分配給 id=myButn" 的 HTML 元素。
按鈕點擊時Javascript函數(shù)將會被執(zhí)行。
onload 和 onunload 事件
onload 和 onunload 事件會在用戶進入或離開頁面時被觸發(fā)。
onload 事件可用于檢測訪問者的瀏覽器類型和瀏覽器版本,并基于這些信息來加載網頁的正確版本。
onload 和 onunload 事件可用于處理 cookie。
實例
<body onload="checkCookies()">
onchange 事件
onchange 事件常結合對輸入字段的驗證來使用。
下面是一個如何使用 onchange 的例子。當用戶改變輸入字段的內容時,會調用 upperCase() 函數(shù)。
實例
<input type="text" id="fname" onchange="upperCase()">
onmouseover 和 onmouseout 事件
onmouseover 和 onmouseout 事件可用于在用戶的鼠標移至 HTML 元素上方或移出元素時觸發(fā)函數(shù)。
實例
一個簡單的 onmouseover-onmouseout 實例:
Mouse Over Me
onmousedown、onmouseup 以及 onclick 事件
onmousedown, onmouseup 以及 onclick 構成了鼠標點擊事件的所有部分。首先當點擊鼠標按鈕時,會觸發(fā) onmousedown 事件,當釋放鼠標按鈕時,會觸發(fā) onmouseup 事件,最后,當完成鼠標點擊時,會觸發(fā) onclick 事件。
實例
一個簡單的 onmousedown-onmouseup 實例:
Thank You
如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039我們一起飛!
TML DOM 允許 JavaScript 對 HTML 事件作出反應。
實例
Mouse Over Me
Click Me
*請認真填寫需求信息,我們會在24小時內與您取得聯(lián)系。