javascript – getElementsByName不起作用

查找了几个问题的“答案”,但主要是人们没有将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

解决方法:

在这里你……似乎:

> onclick =“javascript:< ---不必要 - 只需引用函数名称
>需要在窗口上下文中设置ShowContentEngineering
>您正在引用不允许值属性的元素的“value”属性(h5)

我让它工作而不是抓住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/

上一篇:LiteOS:SpinLock自旋锁及LockDep死锁检测


下一篇:c – 按名称获取属性