3

サード パーティの Web サイトの div から要素を削除しようとしています。

そのような

<div id="full_size_photo">
  <img src="img1">
  <img src="img2">
</div>


var imageDiv  = document.getElementById("full_size_photo");
imageDiv.removeChild(imageDiv.childNodes[i]);

imageDivには明らかに5人の子供がいますか?:S i が 1 の場合、img1 は適切に削除されます。3と4を削除すると、img2が削除されます...

誰かがこれがなぜなのか説明できますか?

私が理解している限り、最初の img タグは 0 で、2 番目のタグは 1 になると思いましたか?

4

2 に答える 2

1

空白のストレッチはtextNodeインスタンスです

注釈付きの例:

<div id="full_size_photo">[node 1 --
--]<img src="img1">[node 3 --
--]<img src="img2">[node 5 --
]</div>

本当にやりたいことは次のとおりです。

var div = document.getElementById("full_size_photo");
var images = div.getElementsByTagName("img");
div.removeChild(images[0]);

お役に立てれば!

于 2010-05-18T18:22:17.120 に答える
0

最も可能性が高いのは、ノード間のテキスト ノードimgです。次のようなことを試してください:

var imgList = imageDiv.getElementsByTagName('img');
for (var i = imgList.length - 1; i >= 0; i--) {
  imageDiv.removeChild(imgList[i]);
}

ここで注意すべき点は次の 2 つです。

  • imgすべての子ではなく、ノードである子を検索しているだけです
  • ノードを削除しているため、逆方向にループしています (そうしないと、ノード 1 を削除した後、インデックスを 2 に増やしますが、以前は位置 2 にあったノードは位置 1 になるため、スキップされます)。
于 2010-05-18T18:22:17.590 に答える