2012-12-09 37 views
0

到目前爲止,我發現如何用html頁面上的另一個元素替換元素。但是我的功能正在以一種奇怪的方式工作。首先它會取代第一和第三張圖片。如果我再次調用它,它只會替換第二個圖像。再次按下按鈕使最後的第四個圖像替換。有人對此有任何想法?這裏的來源:http://pastie.org/5502630 在這裏你可以看到它是如何工作的:http://clubnights.square7.ch/webtech/a2.html使用javascript替代圖像alt-text

+0

有沒有人有一個想法,如何使圖片再次出現在第二次點擊? –

回答

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會導致循環退出。

我創建了一個jsfiddle顯示更改爲語句的一個可能的解決方案:

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

,並通過以相反的順序圖像循環。

+0

另一個類似的解決方案:使用while循環每次獲取列表中的最後一個圖像。 http://jsfiddle.net/VDqGF/3/ – Stuart

+0

@Joe Oravec 你可以說這個解決方案嗎? http://jsfiddle.net/VDqGF/5/ 我剛剛刪除了增量語句 –

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); 
      } 
    }