使用javascript将替换图像替换为alt文本

时间:2012-12-09 16:27:06

标签: javascript html image text replace

到目前为止,我发现如何用html页面上的另一个元素替换元素。但我的功能是以一种奇怪的方式工作。首先,它取代了第一和第三张图像。如果我再次调用它,它只替换第二个图像。再次按下按钮使最后的第四个图像替换。有人有任何想法吗?以下是来源:http://pastie.org/5502630 在这里,您可以看到它是如何工作的:http://clubnights.square7.ch/webtech/a2.html

2 个答案:

答案 0 :(得分: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);
            }
    }

答案 1 :(得分:0)

每次通过for循环时,都会从images[]数组中删除第一个图像。这会更改数组内容和设置为循环中条件的数组长度。

例如,你的第一个循环删除images[0],ausdruck_1.gif - 但现在images.length等于3,而不是4,现在数组的内容是:

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

你的第二次循环删除images[1] - 现在是ausdruck_3.gif - 并进一步将图像数组的长度更改为2,因此i的下一个增量为2会导致循环退出。 / p>

我创建了一个jsfiddle,显示了将for语句更改为:

的可能解决方案

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

以相反的顺序循环显示图像。