2013-03-05 102 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