2011-04-09 120 views
0

HI all!我有个疑问。我需要通过它的id获取元素。我知道我可以使用document.getElementById()或jquery选择器,但我不想使用jquery或任何其他库。这个想法是只使用js和没有库来构建一个组件。js通过编号获取元素

我得到这个情况下,通过代码生成的代码:

<div id="objprop"> 

    <div id="prop-header"><span>Mi Ventana</span></div> 
    <div id="prop_width" style="clear: both;"> 
     <label style="margin-left: 7px; margin-bottom: 7px; float: left;">Width</label> 
     <input type="text" style="float: right; margin-right: 7px; width: 70px;" id="width"> 
    </div> 
    <div id="prop_height" style="clear: both;"> 
     <label style="margin-left: 7px; margin-bottom: 7px; float: left;">Height</label> 
     <input type="text" style="float: right; margin-right: 7px; width: 70px;" id="height"> 
    </div> 
    <div id="prop_left" style="clear: both;"> 
     <label style="margin-left: 7px; margin-bottom: 7px; float: left;">Left</label> 
     <input type="text" style="float: right; margin-right: 7px; width: 70px;" id="left"> 
    </div> 
    <div id="prop_top" style="clear: both;"> 
     <label style="margin-left: 7px; margin-bottom: 7px; float: left;">Top</label> 
     <input type="text" style="float: right; margin-right: 7px; width: 70px;" id="top"> 
    </div> 
</div> 

这样,让supose我想设置的输入宽度id的值。我不确定如何使用document.getElementById,因为可能是html中具有相同id的其他元素。

清楚,是我的疑问

+0

我不清楚这是一个问题。你在问什么? DOM中是否有多个元素可能具有相同的ID? – Zach 2011-04-09 23:23:23

+0

@Zach有可能,如果页面编码器不知道“ID”值必须是唯一的:-) – Pointy 2011-04-09 23:24:24

+0

谢谢。那么我的错误;) – 2011-04-09 23:27:37

回答

2

按照specifications元素的id属性必须是一个文档中是唯一的。所以只要文档符合规范,使用getElementById()就不会有问题。

1

的“ID”属性的值必须是唯一整个页面。你说得对,“getElementById()”必须处理在多个元素上使用的相同“id”值。这就是为什么你绝对不应该这样做。这就是为什么它被称为“ID”—它是标识符元素。

3

HTML specification指出id只能使用一次。它必须在整个文档中独一无二。如果你正在处理有效的文档,你应该感觉舒服使用document.getElementById()

0

我不确定使用document.getElementById,因为可能是其他元素在html中具有相同的id。

Id必须是唯一的。

http://validator.w3.org/

0

谢谢。

解决我的问题。我做了如下:

我创建元素动态,所以我添加了一个postfix 像这样:this.postfix = new Date()。getTime();

所以,当我必须添加和输入id'宽度'我添加后缀,就像它被命名为'宽度_'+后缀。所以我可以以安全的方式使用document.getElementById;

谢谢