要获取触发事件的原始元素,您应该使用以下内容:
<div id="items" onclick="myfunction(event);">
function myfunction(e) {
var evt = e || window.event;
var tar = evt.target || evt.srcElement;
// Should probably check that the tar element is a <p> and has the specific id/class
var val = tar.innerHTML;
alert(val);
}
http://jsfiddle.net/GtfDf/
类似地,为了正常工作和有效的 HTML,id
需要唯一的属性。getElementById
另一种选择是将事件绑定到每个<p>
元素,而不是使用id
,使用class
。像这样:
<div id="items">
<p class="item">a</p>
<p class="item">b</p>
<p class="item">c</p>
<p class="item">d</p>
<p class="item">e</p>
</div>
window.onload = function () {
var items_div = document.getElementById("items");
var items = items_div.querySelectorAll(".item");
for (var i = 0; i < items.length; i++) {
items[i].onclick = myfunction;
}
};
function myfunction() {
var val = this.innerHTML;
alert(val);
}
http://jsfiddle.net/eWZyn/1/
getElementById
但是使用/有很多选择/替代方案querySelectorAll
,可能会更好,也可能不会更好。
第一个示例对于从 div 添加/删除的动态项目“更好”。在我看来,第二个例子似乎更适合静态项目。我只是说,如果 div 内还有其他元素可以为 click 事件处理。无论哪种方式,我希望这些示例有所帮助。