0

次のような JavaScript を少し使って「複製」したいくつかの入力ボックスを含む dl があります。

var newBox = document.createElement('dl'); 
var sourceBox = document.getElementById(oldkey); 
newBox.innerHTML = sourceBox.innerHTML; 
newBox.id = newkey;          
document.getElementById('boxes').appendChild(columnBox);   

IE では、sourceBox のフォームが newBox に複製され、ユーザーが指定した値が追加されます。Firefox では、元の sourceBox に入力された最後の値が newBox に存在しません。この「棒」はどうやって作るの?

4

3 に答える 3

1

メソッドを試すことができcloneNodeます。内容をコピーする方がうまくいくかもしれません。また、ほとんどの場合、より高速になるはずです

var newBox;
var sourceBox = document.getElementById(oldkey);
if (sourceBox.cloneNode) 
    newBox = sourceBox.cloneNode(true);
else {
    newBox = document.createElement(sourceBox.tagName); 
    newBox.innerHTML = sourceBox.innerHTML; 
}
newBox.id = newkey;              
document.getElementById('boxes').appendChild(newBox);
于 2008-09-16T06:25:57.333 に答える
1

ありがとうございます。

プロトタイプを使用してに変更document.getElementById(oldkey) することで、動作するようになりました$(oldkey)

<script src="j/prototype.js" type="text/javascript"></script>  

var newBox;  
var sourceBox = $(oldkey);  
if (sourceBox.cloneNode)  
     newBox = sourceBox.cloneNode(true);  
else {  
    newBox = document.createElement(sourceBox.tagName);  
    newBox.innerHTML = sourceBox.innerHTML;  
}  
newBox.id = newkey;  
document.getElementById('boxes').appendChild(newBox);
于 2008-09-17T07:13:48.190 に答える
0

Firefox 対 IE: innerHTML の処理?

于 2008-09-16T09:40:36.617 に答える