如果我将相同的id分配给多个dom元素,例如
txtBox.id="1"
txtBox2.id="1"
这有什么问题吗?性能,兼容性等。
答案 0 :(得分:5)
是。 不要这样做
ID应该是唯一的 如果你想要一些相同的,请使用一个类。
ID 不也应以数字值
开头答案 1 :(得分:3)
有两个问题:
id
HTML文档中的must be unique id
以only支持的HTML5支持以{{3}}支持的属性。
答案 2 :(得分:1)
是可能存在性能问题。
如果要为多个元素指定相同的名称,请使用类。
答案 3 :(得分:0)
不是个好主意。 Dom id值应该是唯一的。
已添加事情可能会以奇怪的,特定于浏览器的方式破解。 (并且已经有足够奇怪的,特定于浏览器的东西,你不想再添加机会!)
<强>解决方案强>
如果您还希望从标记中设置值,请考虑元素的DOM class
。请记住,元素可以属于多个类。
如果值仅由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
}