我有以下代码
<!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在那里,虽然我无法访问它但是有价值..
答案 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]);
}