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
el.replaceChild(el2.firstChild.nodeValue, el.firstChild);

ええ、あなたはそこで何をしているのですか?nodeValueを置き換えることはできません。置き換えることができるのは、ノードのみです。

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

これにより、のがに移動firstChildel2ますel。コピーする場合は、事前にクローンを作成する必要があります。すべての子が必要な場合は、それらをループする必要があります。

それfirstChildがテキストノードの場合、その値を簡単に(再)設定し、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 に答える
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 に答える