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>