2011-06-03 24 views
0

用這個來擺脫一個令人討厭的小小'powered by'框,但它總是說 'TypeError:表達式'divs [i]'[undefined]的結果不是一個目的。' 我該如何修復它。Javascript表達式的結果不是一個對象

function damnwhitebox() 
{ 
var myBody = document.getElementsByTagName("body")[0]; 
divs = myBody.getElementsByTagName("div"); 
    for(var i in divs) 
    { 
     if(divs[i].style.zIndex === 99999) 
     { 
      divs[i].style.display == "none"; 
     } 
     if(divs[i].style.zIndex === "1000") 
     { 
      divs[i].style.display == "none"; 

     } 
    } 
} 

回答

3
function damnwhitebox() 
    { 
    var myBody = document.getElementsByTagName("body")[0]; 
    divs = myBody.getElementsByTagName("div"); 
     for(var i =0 ; i <divs.length; i++) 
     { 
      if(divs[i].style.zIndex === 99999) 
      { 
       divs[i].style.display = "none"; 
      } 
      if(divs[i].style.zIndex === 1000) 
      { 
       divs[i].style.display = "none"; 
       alert(divs[i].innerHTML); 

      } 
     } 
    } 

這將工作。在你的代碼中,你混合了for和for循環的語法。使用這個。

For ...意在與對象一起使用來遍歷它們的屬性。如果你打算在數組中使用它,你可以檢查你沒有向元素添加新的屬性。所以更好的是避免數組遍歷的這種語法。
你不應該在DOM數組中使用它(就像在這種情況下一樣),因爲很多JavaScript庫都會擴展DOM。

+0

他們沒有使用但是對於'... in'將返回不僅僅是數組索引 – Phil 2011-06-03 01:08:09

+1

這工作,因爲它更多的混合語法正在循環索引元素0 ... N。如果你使用'for(var i in divs)'循環,那麼它也會嘗試遍歷divs.length(number)和divs.item(function) – 2011-06-03 01:09:57

+0

divs [i] .style.display ==「none」;只是評估真實性去掉一個「=」來做任務。 – scrappedcola 2011-06-03 01:12:07

2

此外,你可能想改變==來=

divs[i].style.display = "none"; 
+0

D'oh!謝謝。 – Derp 2011-06-03 01:21:21

相關問題