getElementsByName无效

时间:2015-10-08 22:35:35

标签: 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

2 个答案:

答案 0 :(得分:4)

你走了......似乎:

  1. onclick="javascript:&lt; ---不必 - 只需引用函数名称
  2. 需要在窗口上下文中设置
  3. ShowContentEngineering
  4. 您正在引用不允许值属性的元素的“value”属性(h5)
  5. 我让它工作而不是抓住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