JavaScript - 具有多个DOM元素的相同ID

时间:2011-11-17 19:27:33

标签: javascript

如果我将相同的id分配给多个dom元素,例如

txtBox.id="1"
txtBox2.id="1"

这有什么问题吗?性能,兼容性等。

6 个答案:

答案 0 :(得分:5)

是。 不要这样做

ID应该是唯一的 如果你想要一些相同的,请使用一个类。

ID 也应以数字值

开头

答案 1 :(得分:3)

有两个问题:

答案 2 :(得分:1)

可能存在性能问题。

如果要为多个元素指定相同的名称,请使用

答案 3 :(得分:0)

不是个好主意。 Dom id值应该是唯一的。

已添加事情可能会以奇怪的,特定于浏览器的方式破解。 (并且已经有足够奇怪的,特定于浏览器的东西,你不想再添加机会!)

<强>解决方案

  1. 如果您还希望从标记中设置值,请考虑元素的DOM class。请记住,元素可以属于多个类。

  2. 如果值仅由Javascript使用,则使用您喜欢的任何非保留属性名称。例如category, group,

答案 4 :(得分:0)

id假设代表一个唯一元素,如果您需要通过单个实体使用class来识别多个元素。

性能影响将以您遇到意外问题的形式出现,Javascript无法正常运行,CSS无法正常应用等等......

当您使用document.getElementById()这样的关键字element 单数时,会出现使用相同ID的问题,它只会返回1个元素,如果它们是您使用document.getElementsByClassName()的课程,并使用该班级名称返回多个elements 复数

答案 5 :(得分:0)

我同意其他意见,认为这不是一个好主意。但是,您可以有效地引用具有相同ID的html页面中的元素。我创建了一个日历类型的表,其表id =“week”,然后有很多行有自己的id,然后TD有自己的id,如“m”,“t”,“w”,“th “,”s“,”su“等依此类推。

然后客户说他希望能够查看上周的日历和下周的日历。所以我在一个页面上写了三个相同的表,并使用JQuery滑块,你可以来回滑动几周。然后我的JavaScript计算停止工作,我意识到这是因为每个表具有相同的TR和TD ID。

所以我开始为每个TR和TD提供新的唯一ID,将周id附加到正常id,例如id =“m_week0”或id =“m_week-1”等。

这似乎过于复杂,因为每个表中有太多带有ID的元素,所以我回滚了这个想法。

相反,我通过将每个id与其父表相关联来引用它们,父表具有自己唯一的ID:$("table[id='week0'] #m").html()

现在我可以循环每周,并获取/设置每个元素的值或内部html,即使它们具有与其他表中出现的TD和TR相同的ID:

var value = 1;
for(var week=-1;week<2;week++){
    $("table[id='week"+week+"'] #m").html() = value; // monday
    value++; //simple increment as an example

    $("table[id='week"+week+"'] #t").html() = value; //tuesday
    value++; //simple increment as an example

    $("table[id='week"+week+"'] #w").html() = value; //wednesday
    value++; //simple increment as an example

    $("table[id='week"+week+"'] #th").html() = value; //thursday
    value++; //simple increment as an example

    $("table[id='week"+week+"'] #f").html() = value;  //friday
    value++; //simple increment as an example

}