document.getElementsByName返回undefined,但找不到该值

时间:2013-12-30 16:51:02

标签: javascript

我有以下代码

<!DOCTYPE html>
<html>
<head>
<script>
var object = document.getElementsByName("test");
console.log(object[0]);
</script>
</head>
<input type="hidden" name="test" value="Hi"/>
</body>
</html>

我需要它来记录“嗨”,虽然它失败了,它说index [0]是未定义的,即使只有控制台记录对象我可以完美地看到它与值。

我尝试在没有索引的情况下使用它,但它显然失败了,因为它是一个NodeList,我看不出确切的错误,我试图修复它。我确定索引0在那里,虽然我无法访问它但是有价值..

4 个答案:

答案 0 :(得分:6)

这是因为你的javascript在DOM完成加载之前正在执行。

如果您将脚本放在<input>之后,您的控制台将显示[HTMLInputElement]。然后显示值

<!DOCTYPE html>
<html>
<head>
</head>
<input type="hidden" name="test" value="Hi"/>
<script>
var objectTag = document.getElementsByName("test");
console.log(objectTag[0].value);
</script>
</body>
</html>

答案 1 :(得分:1)

控制台返回undefined,因为您尝试在浏览器解析之前访问DOM元素(input)。

在您尝试访问的HTML 后放置<script>

<body>
    <input type="hidden" name="test" value="Hi"/>
    <script>
       var object = document.getElementsByName("test");
       console.log(object[0]);
    </script>
</body>

答案 2 :(得分:-1)

试试这个:

<!DOCTYPE html>
<html>
<head>
</head>
<input type="hidden" name="test" value="Hi"/>

<SCRIPT language=javascript>
   var object = document.getElementsByName("test").value;
   console.log(object);
</script>
</body>
</html>

答案 3 :(得分:-1)

这是因为你在加载完成之前得到了Dom元素

使用以下脚本

 <input type="hidden" name="test" value="Hi"/>
    <script>
       var object = document.getElementsByName("test");
       console.log(object[0]);
    </script>

或   您可以使用外部Javascript文件并将您的编码放在javascript文件中,如下所示

  $(document).ready(function(){ 
   var object = document.getElementsByName("test");
           console.log(object[0]);
  }