Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.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-从元素中按名称获取元素?_Javascript_Html - Fatal编程技术网

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答案的评论。@-(