javascript innerHTML替代方案

时间:2012-06-07 10:17:53

标签: javascript dom

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

3 个答案:

答案 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