参照一个div一个div内用相同的ID为另一个内的另一个
我怎么能是指由ID的div嵌套时,它具有相同的ID嵌套在一个类似命名的div一个div参照一个div一个div内用相同的ID为另一个内的另一个
如
<div id="obj1">
<div id="Meta">
<meta></meta>
</div>
</div>
<div id="obj2">
<div id="Meta">
<meta></meta>
</div>
</div>
我想要得到的元
document.getElementById('obj1').getElementById('Meta').getElementsByTagName('meta')
的innerHTML
不起作用
只有当页面上有一个项目时才能使用ID,无论是SPAN,DIV还是其他任何项目。 CLASS是你应该使用的,当你可能有一个重复的元素。
代码不起作用,因为您是通过唯一ID引用元素,但页面上有多个元素。
编号应该为u NIQUE。
您也可能会遇到此标记的问题,因为“meta”标签只在head标签内而非body标签内是合法的。就我看Firebug而言,Firefox甚至可以将这些元标记拉出体外并将它们投入到头部(并且在这种情况下,将任何文本内容放入父div中),所以你根本不会在DOM中看到它们。
由于id属性是唯一的文档范围标识符,因此您应该命名空间您的id。
<div id="obj1">
<div id="obj1_Meta">
<meta></meta>
</div>
</div>
<div id="obj2">
<div id="obj2_Meta">
<meta></meta>
</div>
</div>
document.getElementById('obj1_Meta').getElementsByTagName('meta')
为你提供了HTML,这应该工作:
document.getElementById('obj1').getElementsByTagName('div')[0].getElementsByTagName('meta');
只是忽略内div的,假的ID和标签名得到它。你也应该能够完全忽略内部的div,因为的getElementsByTagName搜索整个子树:
document.getElementById('obj1').getElementsByTagName('meta');
讨厌指出明显,但在你的榜样,obj1_Meta和obj2_Meta是唯一的ID的,所以如果是这种情况在您的工作代码:
document.getElementById('obj1_Meta').getElementsByTagName('meta')[0].innerHTML;
将按所述工作。作为一个复选,你是否认为这个?
如果不是,真可惜......
为“差”或“错”为你的代码,将工作的选择是使用像jQuery JavaScript框架。一旦你包含它,你可以通过它一个CSS选择器(甚至是语义上不正确的),像这样得到的元素:
$('#obj1 #obj1_Meta meta').html()
$()是说的jQuery的方式的document.getElementById()...对类固醇。 .html()等效于.innerHTML
其他框架,如PrototypeJS和MooTools也提供了类似的功能。
原型例如:
$$('#obj1 #obj1_Meta meta').innerHTML;//note the double $'s
框架节省大量的时间和麻烦关于浏览器的兼容性,“失踪”的JavaScript方法(如getElementsByClassName方法)和快速编码AJAX。无论如何,这些东西使他们成为一个好主意。
ID的意思是独特的,智能地使用类。
<div id="obj1" class="obj">
<div id="obj1_Meta" class="obj_Meta">
<meta></meta>
</div>
</div>
<div id="obj2" class="obj">
<div id="obj2_Meta" class="obj_Meta">
<meta></meta>
</div>
</div>
-
.obj
=目标两个元件 -
#obj1.obj
=目标只有第一 -
#obj1.obj_Meta
=目标OBJ1内DIV -
#obj2.obj
=目标只有第二 -
#obj2.obj_Meta
=目标OBJ2内DIV
感兴趣的一点/ =我想看到它已经用名为Id的程序编写了我有点坚持去改变他们 – Supernovah 2009-03-06 01:40:52
是啊,你有点拧,除非你可以改变这一点。 – 2009-03-06 01:45:13