Javascript-从元素中按名称获取元素?
当我尝试以下方法时:Javascript-从元素中按名称获取元素?,javascript,html,Javascript,Html,当我尝试以下方法时: <html> <body> <script type="text/javascript"> window.onload = function() { var test1 = document.getElementsByName("div1"); alert(test1[0]); var test2
<html>
<body>
<script type="text/javascript">
window.onload = function() {
var test1 = document.getElementsByName("div1");
alert(test1[0]);
var test2 = test1[0].getElementsByName("div2");
alert(test2[0]);
}
</script>
<div name="div1">
<div name="div2">
</div>
</div>
</body>
</html>
window.onload=函数(){
var test1=document.getElementsByName(“div1”);
警报(test1[0]);
var test2=test1[0].getElementsByName(“div2”);
警报(test2[0]);
}
这不是我想要的方式。我制作了一个表单,我需要能够以类似于我用这个测试的方式获得表单数据 如果我没有记错,只有
文档(HTMLDocument)具有getElementsByName
方法。DOM元素没有该方法,您不能通过将它们用作上下文来应用它。如果我没有记错的话,只有文档(HTMLDocument)有getElementsByName
方法。DOM元素没有该方法,您不能通过将它们用作上下文来应用它。getElementsByName
只能从文档元素调用:
var test2 = document.getElementsByName('div2');
更重要的是,您应该只为表单元素使用name
属性,而不是div
s
如果你想要一个更容易让你在DOM元素中进行搜索的API,考虑使用jQuery:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>
$(function() {
var div1 = $('#div1');
var div2 = div1.find('#div2');
});
</script>
</head>
<body>
<div id="div1">
<div id="div2"></div>
</div>
</body>
</html>
$(函数(){
var div1=$(“#div1”);
var div2=div1.find('#div2');
});
当然,由于id
s必须在文档范围内是唯一的,因此通常没有理由在另一个元素中搜索特定的id。因此,您不需要像jQuery这样花哨的东西来实现如此简单的功能。getElementsByName
应该只从文档元素调用:
var test2 = document.getElementsByName('div2');
更重要的是,您应该只为表单元素使用name
属性,而不是div
s
如果你想要一个更容易让你在DOM元素中进行搜索的API,考虑使用jQuery:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>
$(function() {
var div1 = $('#div1');
var div2 = div1.find('#div2');
});
</script>
</head>
<body>
<div id="div1">
<div id="div2"></div>
</div>
</body>
</html>
$(函数(){
var div1=$(“#div1”);
var div2=div1.find('#div2');
});
当然,由于id
s必须在文档范围内是唯一的,因此通常没有理由在另一个元素中搜索特定的id。因此,您不需要像jQuery这样的花哨的东西来实现如此简单的功能。div的属性中没有名称。为什么不使用id呢?div的属性中没有名称。为什么不改用id?该死!我的读心机有一个bug,好吧,我放弃,你打算用什么方法来使用它?你能用jquery吗?是的,你想干什么?@亚萨:该死!我的读心机有一个bug,好吧,我放弃,你打算用什么方法来使用它?你能用jquery吗?是的,你想做什么?@asph:如果你使用的是简单的ids,jQuery就太过分了<代码>div1=document.getElementById(“div1”);div2=document.getElementById(“div2”)代码>你甚至不需要使用div1作为上下文,因为id被认为是唯一的。我完全同意。在答案中添加了这一注释。谢谢。我不想通过ID获取特定元素。我有一个表单,其中包含可变数量的选项和子选项。我需要按它们出现的确切顺序来取。我还能怎么做呢?如果您使用的是简单的ids,那么jQuery就太过分了<代码>div1=document.getElementById(“div1”);div2=document.getElementById(“div2”)代码>你甚至不需要使用div1作为上下文,因为id被认为是唯一的。我完全同意。在答案中添加了这一注释。谢谢。我不想通过ID获取特定元素。我有一个表单,其中包含可变数量的选项和子选项。我需要按它们出现的确切顺序来取。我还能怎么做?+1,但是name属性对比form更多的元素有效(总共有14个),例如所有表单控件、img、a、object等等。@RobG:您的注释应该指向其他答案吗?oops!应该是对雅各布回答的评论:-(+1,但name属性对比form更多的元素有效(总共有14个),例如所有表单控件、img、a、object等等。@RobG:您的评论应该指向其他答案吗?Ooops!应该是对Jacob答案的评论。@-(