Javascript 如何将内部html的文本更改为id的文本

Javascript 如何将内部html的文本更改为id的文本,javascript,Javascript,我需要编写一个名为的函数,它接受一个参数,即元素列表。在元素列表中有一个元素有一个ID,但我不知道这个ID叫什么。函数应该将元素的内部文本更改为ID的值。 例如: 它应该做什么: 特殊的 我尝试过使用innerhtml,但我不知道如何使用,因为id未知。 请帮忙。像这样的事情 功能更改(divs){ divs.forEach((div)=>{ if(部门id){ div.innerHTML=div.id; } }) } 设divs=document.querySelectorAll('

我需要编写一个名为的函数,它接受一个参数,即元素列表。在元素列表中有一个元素有一个ID,但我不知道这个ID叫什么。函数应该将元素的内部文本更改为ID的值。 例如:


它应该做什么:


特殊的
我尝试过使用innerhtml,但我不知道如何使用,因为id未知。
请帮忙。

像这样的事情

功能更改(divs){
divs.forEach((div)=>{
if(部门id){
div.innerHTML=div.id;
}
})
}
设divs=document.querySelectorAll('div');
更改(divs)

类似这样的东西

功能更改(divs){
divs.forEach((div)=>{
if(部门id){
div.innerHTML=div.id;
}
})
}
设divs=document.querySelectorAll('div');
更改(divs)

要确定元素是否有ID,可以使用
hasAttribute()
方法:

//Array.prototype.slice.call()是将NodeList文档.querySelector返回转换为数组的简单方法。
const divs=Array.prototype.slice.call(document.querySelectorAll('div');
常量haveIds=divs.filter(元素=>
元素。hasAttribute('id')
);
console.log(haveIds)
A
B
C
D

E
要确定元素是否有ID,可以使用
hasAttribute()
方法:

//Array.prototype.slice.call()是将NodeList文档.querySelector返回转换为数组的简单方法。
const divs=Array.prototype.slice.call(document.querySelectorAll('div');
常量haveIds=divs.filter(元素=>
元素。hasAttribute('id')
);
console.log(haveIds)
A
B
C
D
现代语法:

let divs = document.body.querySelectorAll("div");
for (const div of divs) {
  if (div.hasAttribute("id")) {
    const id = div.id;
    div.innerHTML = id;
  }
}
现代语法:

let divs = document.body.querySelectorAll("div");
for (const div of divs) {
  if (div.hasAttribute("id")) {
    const id = div.id;
    div.innerHTML = id;
  }
}
const theDivs=document.queryselectoral('div');
如果(第四个){
theDivs.forEach(函数(el){
如果(标高id){
el.innerHTML=el.id;
}
});
}否则{
警报(“对不起,找不到divs buddy”);
}
div{
填充:1rem;
边框:浅灰色1px点;
宽度:10雷姆;
}

const theDivs=document.queryselectoral('div');
如果(第四个){
theDivs.forEach(函数(el){
如果(标高id){
el.innerHTML=el.id;
}
});
}否则{
警报(“对不起,找不到divs buddy”);
}
div{
填充:1rem;
边框:浅灰色1px点;
宽度:10雷姆;
}

遍历元素列表,并通过
css
选择器检查它们:
.matches('div[id'))
。使用找到的内容的
textContent

let divs = document.querySelectorAll('div');
let result = findId(divs);
console.log(result);


function findId(list) {
    for (var i = 0; i < list.length; i++) {
      if (list[i].matches('div[id]')) {
        return list[i].textContent;
      }
    }
    return null;
}
let divs=document.querySelectorAll('div');
让结果=findId(divs);
控制台日志(结果);
函数findId(列表){
对于(变量i=0;i
遍历元素列表,并通过
css
选择器检查它们:
.matches('div[id'))
。使用找到的内容的
textContent

let divs = document.querySelectorAll('div');
let result = findId(divs);
console.log(result);


function findId(list) {
    for (var i = 0; i < list.length; i++) {
      if (list[i].matches('div[id]')) {
        return list[i].textContent;
      }
    }
    return null;
}
let divs=document.querySelectorAll('div');
让结果=findId(divs);
控制台日志(结果);
函数findId(列表){
对于(变量i=0;i
ES6语法实际上更快。这值得一票否决吗?一些永远不会被注意到的事情。。。只有在需要的时候(在这个级别上)才能提高你的表现,否则你会很困难。当某件事不是正确答案时,不要因为你的偏好而投反对票。在这里提供帮助应该是件好事,而不是坏事。ES6语法实际上更快。这值得一票否决吗?一些永远不会被注意到的事情。。。只有在需要的时候(在这个级别上)才能提高你的表现,否则你会很困难。当某件事不是正确答案时,不要因为你的偏好而投反对票。在这里提供帮助应该是件好事,而不是坏事;NodeList有一个forEach方法,其工作原理与Array相同:)True,尽管我通常还是更喜欢将其转换为数组,因为
NodeList
有一个非常有限的数组方法子集,所以如果您的情况不像调用
forEach()
那么简单,那么您会想要转换它。我很好奇它是否更广泛,与调用转换片的效率相比,效率更低或相同。。。。我要试试这个!来自未来的信息:切片速度显然是传播速度的两倍。想想看,只是指出你不需要在最后一个片段中对QuerySelector进行切片;NodeList有一个forEach方法,其工作原理与Array相同:)True,尽管我通常还是更喜欢将其转换为数组,因为
NodeList
有一个非常有限的数组方法子集,所以如果您的情况不像调用
forEach()
那么简单,那么您会想要转换它。我很好奇它是否更广泛,与调用转换片的效率相比,效率更低或相同。。。。我要试试这个!来自未来的信息:切片速度显然是传播速度的两倍。想想看。不要只添加代码,解释代码的作用以及它如何解决OP的问题。不要只添加代码,解释代码的作用以及它如何解决OP的问题。