Javascript - 从元素名称获取元素?

问题描述:

当我尝试以下方法:Javascript - 从元素名称获取元素?

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

它不工作,我打算将它的方式。我做了一个表单,我需要能够以类似的方式获取表单数据。

+2

该死!我的大脑阅读机有一个bug,好的,我放弃了,你想用什么方式使用它? –

+0

你可以使用jQuery吗?是的你想做什么? – kasdega

+1

你打算使用element.innerHTML而不是仅仅是元素节点本身吗? –

如果我没有记错,只有document(HTMLDocument)有getElementsByName方法。 DOM元素没有这个方法,并且你不能通过使用它作为上下文来应用它。

+0

+1,但* name *属性对于比* form *更多的元素(总共有14个元素)是有效的,比如所有的表单控件,img,a,object等等。 – RobG

+0

@RobG:您的评论是否应该针对其他答案之一? –

+0

哎呀!应该是雅各答案的评论。 :-( – RobG

getElementsByName应该只从document元素叫:

var test2 = document.getElementsByName('div2'); 

更重要的是,你真的应该只使用name属性的表单元素,而不是div秒。

如果你想要一个API,它更容易让你一个DOM元素中做的搜索,可以考虑使用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> 

当然,因为id s必须是唯一的文件范围,通常有没有理由在另一个元素内搜索特定的ID。因此,你并不需要像jQuery这样简单的东西。

+1

)如果你使用的是简单的id,那么jQuery是过度杀伤性的,div1 = document.getElementById(“div1”); div2 = document.getElementById(“div2”);'你甚至不需要使用div1作为上下文因为ids被认为是唯一的 –

+0

我完全同意。补充说,注意到的答案。 – Jacob

+0

谢谢。我不想通过身份证得到具体的元素。我有一个表单可变数量的选项,我需要按照它们出现的顺序来获取它们,我还能怎么做? – mowwwalker

div的属性中没有name。为什么不用ID来代替?