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

JavaScript-对多个DOM元素具有相同的ID,javascript,Javascript,如果我将相同的id分配给多个dom元素,例如 txtBox.id="1" txtBox2.id="1" 这有什么问题吗?性能、兼容性等。是不要这样做 ID应该是唯一的。 如果您想要几个相同的类,请使用一个类 此外,ID应不以数值开头是可能存在性能问题 如果要为多个元素指定相同的名称,请使用类。这不是一个好主意。Dom id值应该是唯一的 添加了东西可能会以奇怪的、特定于浏览器的方式出现故障。(而且已经有足够多奇怪的、特定于浏览器的东西了,你不想再增加机会了!) 解决方案 >P>如果您希望从标

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

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

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

不要这样做

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


此外,ID应不以数值开头

可能存在性能问题


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

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

添加了东西可能会以奇怪的、特定于浏览器的方式出现故障。(而且已经有足够多奇怪的、特定于浏览器的东西了,你不想再增加机会了!)

解决方案

>P>如果您希望从标记中设置值,则考虑元素的DOM <代码>类< /代码>。请记住,一个元素可以属于多个类

  • 如果这些值仅由Javascript使用,则使用您喜欢的任何非保留属性名。例如
    类别、
    组、

  • 有两个问题:

    • HTML文档中的
      id
      属性
    • id
      中支持以数字开头的属性

    id
    假设表示单个唯一元素,如果需要通过单个实体标识多个元素,请使用

    当您遇到Javascript无法正常工作、CSS无法正确应用等意外问题时,会对性能产生影响


    当您使用javascript(如
    document.getElementById()
    关键字是
    element
    singular)时,使用相同id会出现问题,它只返回1个元素,如果它们是您要使用的类,则返回1个元素并返回多个
    元素
    复数

    我同意其他观点,这不是一个好主意。但是,您可以有效地引用html页面中具有相同ID的元素。我制作了一个日历类型的表,其表id=“week”,然后有许多行有自己的id,然后TDs有自己的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,即使它们的ID与其他表中出现的TDs和TRs相同:

    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
    
    }
    
    var值=1;
    
    对于(var week=-1;weekcan您可以详细说明……因为当我这样做时,页面上没有错误?阿巴斯当然有错误。当您尝试按ID选择时,只有一个错误是错误的selected@abbas:错..你只是没有检查。只是为了记录在案,以数字开头的ID在HTML5中很好。@FelixKling我只是说他们不应该,我从来没有说我t错了^ ^ ^性能问题是什么…我很清楚y我们不应该使用这个…但是如果你能告诉我可能存在什么性能问题,那就太好了。我用了1000个类似的id用于我的颇受欢迎的网站,花了3秒时间加载到Chrome中,将它们改为类删除了所有3秒的解析时间。我猜是这样的浏览器只是希望id是唯一的,并且在不唯一的情况下不会以任何方式进行优化。它可能只返回一个元素。它可能返回节点列表。欢迎来到不一致的浏览器错误恢复地狱。我曾经将一些SQL从MySQL移到Postgresql,这涉及到大量重写。我听到过一些关于C必须是唯一的噩梦我不认为有任何一种语言可以让人们在不离开操作系统的情况下就搞乱语言环境。我只是说,没有任何一种语言能像网络编程那样,让你担心你的代码在20个不同的平台上运行,所有这些平台都有自己的怪癖、规则、规定,你有5-6个主要浏览器,一些运行在多个操作系统(MAC、Linux、Windows)上,一些运行在移动设备(iPhone/Android/Windows mobile)上,可悲的是,即使是同一个浏览器,在其中任何一个平台上的表现也可能完全不同。