Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript document.getElementsByName返回未定义的值,无法找到该值_Javascript - Fatal编程技术网

Javascript document.getElementsByName返回未定义的值,无法找到该值

Javascript document.getElementsByName返回未定义的值,无法找到该值,javascript,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&g

我有以下代码

<!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>

var object=document.getElementsByName(“测试”);
console.log(对象[0]);
我需要它记录“Hi”,虽然它失败了,但它表示索引[0]未定义,即使仅在控制台记录对象时,我可以完全看到它和值

我尝试在没有索引的情况下使用它,但它显然失败了,因为它是一个节点列表,我看不出到底出了什么问题,我尝试了很多次来修复它。我确信索引0在那里,虽然我无法访问它,但它有价值。

尝试以下操作:

<!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>

var object=document.getElementsByName(“测试”).value;
console.log(对象);

这是因为您在加载完成之前获取了Dom元素

使用下面的脚本

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

控制台返回undefined,因为您试图在浏览器解析DOM元素之前访问它(输入<代码>)

将您的
放在您试图访问的HTML之后

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

var object=document.getElementsByName(“测试”);
console.log(对象[0]);

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

如果将脚本放在
之后,控制台将显示[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>

var objectTag=document.getElementsByName(“测试”);
console.log(objectTag[0].value);

您的代码似乎工作正常,只需将您的
移到
演示上面:``这是一个更好的JSFIDLE示例:如果脚本在html之前,它就不工作了。如果脚本在html之后,它就会工作。
getElementsByTagName
将匹配
input
,而不是名称attribute@DarrenKopp对不起,朋友。有点混乱。现在我明白我的错误了,有没有办法把我的JS放在输入元素上面,但等它加载后再得到值呢?你需要等DOM完全加载后再开始。在运行javascript之前,您可以尝试使用jQuery
$(document.ready
函数或使用
setTimeout
设置计时器。此外,为了获得最佳性能和加载速度,建议您在
结束标记之前加载脚本。有没有办法仍然将my JS放在输入元素上方,但等待加载,然后获取值?@ChosenWann:您可以使用
<!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>