如何获取页面的相同ID标签的第二个标签

有两个div标签,且两个div的ID相同,请教如何获取第二个标签,每次获取的都是第一个,碰到这种棘手的问题,必须两个ID相同。(也不可以动态添加name等属性区分,都是从后台一起调用出来的=_=),可以利用选择器之类的实现吗,谢谢哒~

阅读 13k
7 个回答

如果你能控制这段html的内容,用class而不是id。我想不出用不了class的情况。

如果你不能控制html的内容,可以用以下代码(假定ID为'sameId')

// 方法1
Array.from(document.getElementsByTagName('div'))
  .filter(el => el.id === 'sameId')

// 方法2
document.querySelectorAll('#sameId')

你可以的 div的id相同......
你不知道id是什么意思吗?
同时 div怎么着就不可以添加别的属性了?class行不行?

ID本身的唯一性与特殊性就注定他不可重复。
放demo出来。我不相信什么情况下必须要使用两个ID还不能添加自定义属性。另外如果是后台调用的数据,你也可以再处理下。如果后台返回的是html结构。。。

谢邀

首先 在html元素中,ID是唯一的,你可以通过class来获取,不可以有多个相同的ID

$(id).eq(0)

class类选择器肯定行啊,我不清楚你为什么要有两个相同的id,ID是指唯一的标示。你要选择第二个,直接document.getElementsByClassName(".类名")[1];就可以了

首先,还是不要用相同id。

//第一行改为你自己的dom结构的选取方式。
        var elDivs = document.getElementsByTagName('div');
        var elDiv = null;
        var chooseId = 'test';
        var chooseNth = 2;
        var nth = 1;
        for(var i = 0 ;i<elDivs.length;i++){
            if(elDivs[i].id==chooseId&&nth==chooseNth){
                elDiv=elDivs[i];
                break;
            }else{
                nth++
            }
        }
        console.log(elDiv);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题