2013-03-05 100 views
0

大家下午好 - 我有一個(可能)簡單的問題,我似乎無法在徹底搜索後找到答案。我遇到的錯誤是「Uncaught TypeError:無法讀取null值的屬性值」。在線120(在下面複製):無法讀取空值的屬性值 - Javascript

mercedes_txt = mercedes_txt + "<tr><td><button id=\"Mercedes Add Value\" 
    onclick=\"addAttribute('Merceds-Benz', " + mercedes_counter + ", '" + 
    document.getElementById('Mercedes-Benz Text').value + "')\">Add</button></td><td> 
    <input type=\"text\" name=\"Mercedes-Benz Text\" id=\"Mercedes-Benz Text\" /> 
    </td></tr></table>"; 

我試圖將代碼分成多行以提高可讀性。如果我拿出「onclick」代碼正確執行。另外,如果我用'someValue'代替

'" + document.getElementById ('Mercedes-Benz Text').value + "' 

,代碼正確執行。所以問題一定是我從一個動態創建的對象請求值(它現在還不存在,但一旦代碼應用於innerHTML調用)。對不起,我是新手,但我很感謝大家的幫助。

+3

我不認爲id屬性可以包含那樣的空格。所以你可能無法獲得你的元素,因爲無效的ID。此外,你不能得到尚不存在的元素! – bfavaretto 2013-03-05 19:29:42

+1

@bfavaretto正確。 http://www.w3.org/TR/html5/dom.html#the-id-attribute – 2013-03-05 19:32:13

回答

2

我看到了兩個錯誤:

  1. 嘗試使用無效的ID爲你的元素。有關id命名規則,請參閱What are valid values for the id attribute in HTML?

  2. 您正試圖獲取尚未添加到DOM的元素的值。

我建議擺脫那個內聯onclick處理程序,並通過代碼添加。就像這樣:

var addValueButton = document.getElementById('MercedesAddValue'); 
addValueButton.addEventListener('click', function(e) { 
    // get live form values here by traversing the DOM 
    // you may want to use jQuery... 
}); 
+0

謝謝,你是對的,我使用了一個無效的ID作爲我的元素。我已經改變了,但我仍然得到相同的錯誤,因爲我沒有添加元素到DOM,但我怎麼去解決這個問題?謝謝! – 2013-03-05 19:34:24

+0

謝謝 - 完美解決。 – 2013-03-05 19:52:03