2013-06-19 61 views
-2

下面是Javascript代碼:陣列具有的getElementById不起作用

var divs = new Array("0", "c", "tb", "cn"); 
window.onload = function WindowLoad(event) { 
    for (i = 0; i < divs.length ; i++) { 
     document.getElementById(divs[i]).style.borderWidth = "medium"; 
    } 
} 

的div的ID都被存儲數組中,但我很困惑,爲什麼它不會把周圍的文本填料邊界我已經到位。我可能需要使用borderWidth以外的東西嗎?

+0

你在控制檯中的任何錯誤?請注意,普通數字(是)無效的「id」值。 – Bergi

+1

您必須從內存中設置邊框樣式 – Musa

+0

,直到您爲其指定顏色,邊框纔是透明的。我傾向於嘗試「.... .style.border =」solid 1px black「;} ..... – enhzflep

回答

2
document.getElementById(divs[i]).style.border="solid medium"; 

,而不是僅僅

document.getElementById(divs[i]).style.borderWidth="medium"; 
+2

'solid medium'對於'border-width'屬性不是一個有效值'solid'是一個border-style屬性的值編輯完成後:在設置'border'屬性時,通常還需要指定邊框顏色。 – Quentin

0

當使用數組其最好不要使用運行指數自預期的長度不行爲。 例如:

var arr=[]; 
arr[0]="0"; 
arr[1000]=1000; 

什麼現在

arr.length return now? 
the answer is **1001**. 

如果循環中使用索引 - 你會得到錯誤嘗試訪問ARR當陣列上[1]。

第二件事:使用類而不是內聯樣式。 你的代碼應該寫在下面的方法:

CSS:

myClass{ 
    border: 1px solid red; 
} 

腳本

var divs= new Array("0", "c", "tb", "cn"); 
window.onload = function WindowLoad(event) { 
    var key; 
    // The key will not loop over the real indexes of the array 
    for (key in divs) { 
     // make sure that the index we need is valid and exists. 
     if (divs.hasOwnProperty(key)){ 
      document.getElementById(divs[key]).className += 'myClass'; 
     } 
    } 
}