查阅了几个关于这个问题的“答案”,但大多数人都没有将getElementsByName()返回的结果视为NodeList!
编辑:我正试图根据单击元素来隐藏/显示元素。 我可以使用document.getElementById进行硬编码,并在每次需要隐藏/显示元素时添加一个。 但是,如果我可以检索所有命名为某些内容的元素并对它们运行循环以隐藏/显示,那么就会更理想。 然后,当编写时,只需标记一个元素名称,此循环就可以无需修改地工作。 在下面的代码中,我的代码只是为了测试目的而尝试使用弹出窗口显示值。 目前,它始终会因为null错误而中断。 我正在使用并设计用于Internet Explorer 9,因为这是公司使用的浏览器。
代码:
<input type="radio" name="Area" value="Engineering" id="EngineeringCheck" onclick="javascript: ShowContentEngineering();" />Engineering
<script type="text/javascript">
function ShowContentEngineering() {
alert(document.getElementsByName('EngineeringAreas')[0].value)
document.getElementById('InformationBlock').style.display = 'block';
}
</script>
<h5 name="EngineeringAreas" value="luls"> WHAT THE HECK </h5>
上面的代码报错,说getElementsByName('EngineeringAreas')[0]中的对象为空。显然,在它下面,它不是空的...我是否将getElementsByName('string')[0].value与元素值混淆了?还是检索到其他值?
理想情况下,我稍后会添加其他元素,并将它们标记为“EngineeringAreas”,从而永远不必处理隐藏/显示功能。
编辑:这是错误消息:
Unhandled exception at line 53, column 9 in http://localhost:57264/Home/Index
0x800a138f - Microsoft JScript runtime error: Unable to get value of the property 'value': object is null or undefined
onclick="ShowContentEngineering();
而不是onclick="javascript: ShowContentEngineering();
。 - j08691getElementsByName('string')[0]
吗?还是只是为了注释而已?如果你在测试中真的使用了getElementsByName('EngineeringAreas')[0]
,那么IE浏览器和Firefox、Chrome以及Safari浏览器之间存在差异。但我没有IE浏览器可以尝试。 - blm