JavaScript getElementByName 不起作用

IT技术 javascript
2021-01-27 17:33:20

这个简单的JS无法设置“para”的值。我猜 getElementByName 不起作用。但为什么?

<script>
function fn()  
{   
    document.getElementById("para").setAttribute("name","hi");  
    document.getElementByName("hi").setAttribute("value","my value is high");  
}  
</script>

HTML:

<input type="button" onClick="fn()" value="click me">
<input id="para" type="text" />
4个回答

它是getElementsByName注意复数。它返回具有该name属性的元素的类似数组的 NodeList

getElementsByName存在,它返回元素的集合。如果您打算只找到一个:

document.getElementsByName("hi")[0].setAttribute("value", "my value is high");

编辑:a,HTML 那里(在编辑之前没有看到)。HTML 中没有 'hi' 元素,可能在某些 XML 格式中有...

你们好棒。getElementsByName("hi")[0] 工作得很好!谢谢你。现在我只知道 getElementById 不是复数,因为 id 是唯一的。
2021-04-02 17:33:20
呵呵,我的错,把它和 getElementsByTagName() 混淆了 :)
2021-04-04 17:33:20
'hi' 不是标签名称。它只是我在脚本中设置的 input'para' 的名称属性
2021-04-13 17:33:20

not getElementByNamebut getElementsByName,它返回数组。

<html>
<head>
    <script language="javascript">
        function fn() {
            document.getElementById("para").setAttribute("name","hi");
            x = document.getElementsByName("hi");
            x[0].setAttribute("value","my value is high");
        }
    </script>
</head>
<body onload="fn()">
    <input type="text" id="para" />
</body>
</html>

此外,我发现必须声明文档类型才能使 getelementsbyname 工作。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">