查找了这个问题的几个“答案”,但大多数人没有将getElementsByName()返回的结果作为一个NodeList处理!
编辑:我试图根据被点击的元素来隐藏/显示元素。我可以使用document.getElementById对此进行硬编码,每次我有一个要隐藏/显示的元素时,只需添加一个。但是,如果我能够检索所有命名为某样东西的元素,并对它们运行一个循环来隐藏/显示,这将是非常理想的。然后,我只需在编写时标记一个带有名称的元素,这个循环就可以正常工作了。下面,我的代码只是试图弹出一个值为测试目的的警告。就目前而言,它始终以空错误中断。我正在使用和设计互联网浏览器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')处的对象为null。很明显,就在它下面,它不是空的.我是不是把getElementsByName('string').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发布于 2015-10-08 23:07:58
给你..。似乎:
onclick="javascript: <--没有必要--只需引用函数名ShowContentEngineering我让它工作,而不是抓住innerHTML的h5代码
<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/
发布于 2015-10-08 23:08:38
在.attributes[1]和.getElementsByName('EngineeringAreas')之间插入.value。1指向<h5>元素EngineeringAreas中的第二个属性,即value。将.value放在.attributes[1]之后应该返回警告框中的值文本“luls”。然后,应该按照以下方式设置警报代码:
alert(document.getElementsByName('EngineeringAreas')[0].attributes[1].value);详细信息:value.asp
https://stackoverflow.com/questions/33027062
复制相似问题