0

これまで、htmlページで要素を別の要素に置き換える方法を見つけました。しかし、私の関数は奇妙な方法で機能しています。まず、1番目と3番目の画像を置き換えます。もう一度呼び出すと、2番目の画像のみが置き換えられます。ボタンをもう一度押すと、最後の4番目の画像が最終的に置き換えられます。誰かそれについて何か考えはありますか?ソースは次のとおりです:http://pastie.org/5502630 そしてここでそれがどのように機能するかを見ることができます:http://clubnights.square7.ch/webtech/a2.html

4

2 に答える 2

0

画像のリストを繰り返し処理しながら、画像のリストを変更しています。したがって、画像配列にアクセスしようとすると、それはあなたが思っているものではありません!以下は可能な回避策です。

    function Convert()
    {
            images = window.document.getElementsByTagName('img');
            var num_images = images.length;
            for (var i = 0; i < num_images; i++)
            {
                    var image = images[0];
                    textReplacement = document.createTextNode(image.getAttribute('alt'));
                    image.parentNode.replaceChild(textReplacement, image);
            }
    }
于 2012-12-09T16:40:39.363 に答える
0

ループを通過するたびに、配列forから最初の画像を削除します。images[]これにより、ループの条件として設定されている配列の内容と配列の長さの両方が変更されます。

たとえば、最初のループで、ausdruck_1.gifが削除されますimages[0]が、images.lengthは4ではなく3になり、配列の内容は次のようになります。

images[0]=ausdruck_2.gif
images[1]=ausdruck_3.gif
images[2]=ausdurck_4.gif

ループを2回通過すると、 images[1](現在はausdruck_3.gif)が削除され、さらに画像配列の長さが2に変更されるため、iを2に増やすと、ループが終了します。

forステートメントを次のように変更するための可能な解決策を示すjsfiddleを作成しました。

for(i = images.length-1; i >=0; i--)

画像を逆の順序でループします。

于 2012-12-09T16:59:27.067 に答える