我正在使用innerHTML为页面上的某些元素分配更新的值。但是,innerHTML导致页面上的jquery停止工作,并且页面的css耗尽。
所以我尝试用DOM元素替换,但它不起作用。知道如何解决这个问题吗? 谢谢!
var names =['id','name','quantity','description'];
var len = names.length;
for (var i = 0; i < len; i++){
var el = document.getElementById(\'product_\'+names[i]+\'_main\');
var el2 = document.getElementById(\'product_\'+names[i]+selection);
if(el.hasChildNodes()) {
el.replaceChild(el2.firstChild.nodeValue, el.firstChild);
}
if(el && el2) el.innerHTML=el2.innerHTML; /* this part works, but it caused the page CSS to run and jquery no longer working */
}
答案 0 :(得分:0)
由于你已经使用了jQuery,你可以使用它的.html()方法:
e1.html( e12.html() );
这应该与此相同:
el.innerHTML=el2.innerHTML;
答案 1 :(得分:0)
如果你已经在页面中加载了JQuery,你可以使用JQuery选择器和$(element).html()来获取innerHTML。
var names =['id', 'name', 'quantity', 'description'];
for (var i = 0; i < names.length; i++){
var el = $("#product_"+names[i]+"_main");
var el2 = $("#product_"+names[i]+selection);
if (el.children().size() > 0) {
// Your code here
}
if (el && el2) {
el.html() = el2.html();
}
}
未经测试的代码。
答案 2 :(得分:0)
el.replaceChild(el2.firstChild.nodeValue, el.firstChild);
嗯,你在那干嘛?您无法替换nodeValue,您只能替换节点:
el.replaceChild(el2.firstChild, el.firstChild);
这会将firstChild
的{{1}}移至el2
。如果要复制它,则需要先复制它。如果你想要所有的孩子,你需要循环它们。
如果el
是文本节点,您可以轻松(重新)设置其值,并复制el2的值:
firstChild