【发布时间】:2016-01-21 09:06:08
【问题描述】:
我正在使用 JavaScript,没有库。
我刚刚在 JS 中发现了克隆,并试图弄清楚如何克隆元素但保持附加的事件。
据我所知这是不可能的……
我尝试克隆元素然后添加事件,我尝试先添加事件然后克隆,但从未复制过事件。
这是我的测试代码
<html>
<head>
<style>
.testClass {
background-color: red;
color: black;
outline-color: green;
width: 100%;
}
</style>
<script>
function onLoad(){
//create test div
var x = document.createElement("div");
x.id = "master";
x.className = "testClass";
x.innerHTML = "Text";
document.body.appendChild(x);
//clone the div
var itm = document.getElementById("master");
var cln = itm.cloneNode(true);
document.body.appendChild(cln);
//apply event
document.getElementById("master").onclick = doFunction;
}
function doFunction(){
alert('working');
}
</script>
</head>
<body onload="onLoad()">
</body>
</html>
当我检查代码时,克隆元素确实具有相同的 ID,那么为什么单击克隆元素时事件不起作用?似乎因为它是一个克隆,所以您无法将事件附加到它。
这是 JS 中克隆对象的限制吗?
是否可以在克隆对象创建后向其添加事件?
谢谢。
【问题讨论】:
-
不,这并不是说您不能将事件处理程序附加到它。但是当另一个元素已经具有相同的 id 时,您不能通过它的 id 来选择它。 id 必须是唯一的!
标签: javascript html oop dom