2012-10-05 65 views
1

的屬性'值'我已經完成了一個函數,但我不明白爲什麼,它的一部分不起作用。javascript的問題無法讀取

Actualy我使用className和Id的方法。

下面是部分代碼:

var items = new Array(); 
var itemCount = document.getElementsByClassName("items"); 

for(var i = 0; i < itemCount.length; i++) 
{ 
    items[i] = document.getElementById("p"+(i+1)).value; 
} 

return items; 
} 

而且在那的jsfiddle顯示,該ID存在於HTML部分。

所以它不應該退還給我這個錯誤:

遺漏的類型錯誤:無法讀取空fiddle.jshell.net:402

的特性「價值」的關注線如下:

items [i] = document.getElementById(「p」+(i + 1))。value;

+0

當我運行它時沒有錯誤..我應該在頁面中執行哪個操作? –

回答

1

在你的小提琴中,你有td元素,id p7缺失,p8兩次。那只是在你的小提琴示例中,或者在你的實際代碼中?如果它也在你的代碼中,那麼你的問題就出現了。 你必須糾正其中一個id到p7。

+0

這是我在數據庫中遇到的一個問題,它會截斷真正的價值。非常感謝你的觀察 –

+0

我很高興我可以幫助:) –

2

這意味着:

document.getElementById("p"+(i+1)) 

回報一些循環迭代null。換句話說,該元素不存在。然後嘗試從null中檢索.value屬性,這會引發異常。

更新

如果我讀正確的代碼,p7丟失。你可以這樣檢查:

var elem = document.getElementById("p"+(i+1)); 
if (!elem) { 
    alert('p'+(i+1)+' is missing!'); 
} 
+0

我知道這是什麼意思,但實際上,你可以在小提琴上看到這個元素存在 –

+0

小提琴是瘋了,你可以把它分解成最基本的? – David

+0

所有p +我在列MONTANT RESTANT –

1

這發生在最後一個元素i + 1。 所以只是改變這一點。

for(var i = 0; i < itemCount.length; i++) 
{ 
alert("i"+i+" "+document.getElementById("p" + (i+1)).value); 
items[i] = document.getElementById("p" + (i+1)).value; 
} 

此運行直到第5個元素,即p6。 因爲它顯示p7從服務器代碼本身丟失。

+0

親愛的主席先生,請你向我解釋如何做,以便看代碼在哪裏停止運行? –

+0

當我提醒該值時,彈出警報顯示在所有迭代中,當p7丟失時,將引發錯誤。 –

相關問題