查看了这个问题的几个“答案”,但主要是人们没有将getElementsByName()返回的结果视为NodeList!
编辑:我试图根据被点击的元素隐藏/显示元素。我可以使用document.getElementById进行硬编码,每次我有一个我想要隐藏/显示的元素时,只需添加一个。但是如果我可以检索所有名为something的元素并且只是在它们上面运行一个循环来隐藏/显示它将是理想的。然后我可以在编写时用一个名称标记一个元素,这个循环可以不加改变地工作。在我的代码下面只是尝试使用值来弹出警报以进行测试。至于现在,它始终以空错误打破。我正在使用和设计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]的对象为null。显然,就在它下面,它不是空的...我是否将getElementsByName('string')[0] .value与元素的值混淆了?或者它是否正在检索其他一些值?
理想情况下,我稍后会添加其他元素,使用“EngineeringAreas”标记它们,而不必使用hide / show函数。
编辑:以下是错误消息:
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
答案 0 :(得分:4)
你走了......似乎:
onclick="javascript:
&lt; ---不必 - 只需引用函数名称ShowContentEngineering
我让它工作而不是抓住h5的innerHTML 代码
<input type="radio" name="Area" value="Engineering" id="EngineeringCheck" onclick="ShowContentEngineering();" />Engineering
<h5 name="EngineeringAreas"> WHAT THE HECK </h5>
<script>
window.ShowContentEngineering = function() {
alert(document.getElementsByName('EngineeringAreas')[0].innerHTML)
document.getElementById('InformationBlock').style.display = 'block';
}
</script>
这是一个工作小提琴:https://jsfiddle.net/mu970a8k/
答案 1 :(得分:1)
在.attributes[1]
和.getElementsByName('EngineeringAreas')
之间插入.value
。 1指向名为EngineeringAreas的<h5>
元素中的第二个属性,即value
。在.value
之后放置.attributes[1]
应该在警告框中返回值文本“luls”。然后应该设置警报代码:
alert(document.getElementsByName('EngineeringAreas')[0].attributes[1].value);
更多信息:http://www.w3schools.com/jsref/prop_attr_value.asp