0

我正在使用 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 */
      }
4

3 回答 3

0

由于您已经在使用 jQuery,您可以使用它的 .html() 方法:

e1.html( e12.html() );

这应该与此相同:

el.innerHTML=el2.innerHTML;
于 2012-06-07T10:21:28.090 回答
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();
    }
}

未经测试的代码。

于 2012-06-07T10:25:25.910 回答
0
el.replaceChild(el2.firstChild.nodeValue, el.firstChild);

咦,你在那里做什么?您不能替换 nodeValue,只能替换节点:

el.replaceChild(el2.firstChild, el.firstChild);

this will move the firstChild of el2 into el. If you want to copy it, you'd need to clone it before. If you want all of the children, you'd need to loop over them.

If that firstChild is a text node, you can easily (re)set its value, and copy those of el2:

if (el.firstChild && el.firstChild.nodeType == 3
  && el2.firstChild && el2.firstChild.nodeType == 3)
    el.firstChild.nodeValue = el2.firstChild.nodeValue;
于 2012-06-07T11:28:11.490 回答