在下面的示例代码中,我将onclick事件处理程序附加到包含文本"foo"的span.处理程序是一个匿名函数,弹出alert().
但是,如果我分配给父节点alert(),则此innerHTML事件处理程序将被销毁 - 单击"foo"将无法弹出警告框.
这可以解决吗?
<html>
<head>
<script type="text/javascript">
function start () {
myspan = document.getElementById("myspan");
myspan.onclick = function() { alert ("hi"); };
mydiv = document.getElementById("mydiv");
mydiv.innerHTML += "bar";
}
</script>
</head>
<body onload="start()">
<div id="mydiv" style="border: solid red 2px">
<span id="myspan">foo</span>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我正在尝试找出在浏览器中深度克隆DOM树的最高效方法.
如果我开始
var div = document.getElementById("source");
var markup = div.innerHTML;
Run Code Online (Sandbox Code Playgroud)
什么会更快,
var target = div.cloneNode(true);
Run Code Online (Sandbox Code Playgroud)
要么
var target = document.cloneNode(false);
target.innerHTML = markup;
Run Code Online (Sandbox Code Playgroud)
我知道浏览器平台可能会在这里产生很大的不同,因此任何关于如何在现实世界中进行比较的信息都将受到赞赏.
我在sql表中有一些数据.我通过JSON将它发送到我的JavaScript.
从那里我需要将它组成HTML,以便通过2种方式之一向用户显示.
以下两个问题都没有给出可量化的答案.
从第一个链接的第一个答案,第三个原因(前两个原因不适用于我的环境)
在某些情况下会更快
有人可以建立一个基础案例,当时createElement()方法更快,为什么?
通过这种方式,人们可以根据自己的环境做出有根据的猜测.
在我的情况下,我不担心保留现有的DOM结构或事件监听器.只是效率(速度).
我没有使用关于我提供的第二个链接的库.但它可以为那些人.
研究/链接
我试图在firefox中的一个元素上设置innerHTML并且它工作正常,在IE中尝试它并且出现意外错误,没有明显的原因.
例如,如果您尝试将表的innerHTML设置为"hi from stu",则它将失败,因为该表必须后跟一个序列.
可能重复:
JavaScript:使用innerHTML或(很多)createElement调用来添加复杂的div结构会更好吗?
我该怎么用而不是.innerHTML?所有建议表示赞赏.
我正在制作一个用于表单验证的插件作为实践,但是由于某种原因,在我创建了一个 h2 元素并尝试设置它的属性后,它不起作用。这是代码
var testing = function(regex, value, error_msg, error_msg_field_id){
var pattern = new RegExp(regex);
if (!pattern.test(value)){
var ele = document.createElement("H2");
var node = document.createTextNode(error_msg);
ele.setAttribute('style', 'color:white');
alert("hi");
jQuery(error_msg_field_id).append(node);
}
}
Run Code Online (Sandbox Code Playgroud)
文本显示没有问题,但不是白色的。这对我来说毫无意义