これは私がネット上で見たが、答えを知らなかった興味深い質問ですが動作しません。正しく動作しません。何故なの?のappendChildは
// Copies the contents of one box into another
function copyContents(from, to){
for(var i=0; i<=from.childNodes.length-1; i++){
to.appendChild(from.childNodes[i]); // <---- Error on this line.
}
}
//create a box to copy:
var referenceBox = document.createElement('div');
var link = document.createElement('a');
link.href = 'http://www.example.com/';
link.textContent = 'A link';
referenceBox.appendChild(link);
//Add box copies to the document
for(var i=0; i<5; i++){
var newBox = document.createElement('div');
copyContents(referenceBox, newBox);
document.body.appendChild(newBox);
}
オプション:
- to.appendChild()はHTMLを期待するが、from.childNodes [i]は、ノードオブジェクトであるため、すべてのボックスは、テキスト[対象ノード]を含むであろう。
- document.createElement()は、既存の要素を同じタグで再利用するため、ドキュメントに1つのボックスだけが追加されます。
- 同じリンク要素は複数の親を持つことはできません。そのため、1つのボックスだけにリンクがあります。
- リンクのhrefは、setAttribute()を使用して設定する必要があります。 link.hrefプロパティを設定すると何も行われないため、ボックス内のリンクはどこにも配置されません。
答えは3だと思いますが、わからないのはなぜですか?
説明はありますか? copyContent
に1 - TNX
あなたがコピーしていないが、動く。 * from.childNodes *はライブコレクションなので、長さが減少していて、インデックスが偶数だったものだけを移動します(0を移動すると1が0に移動し、1 、それは前の2であった...など)。 – RobG