Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中元素接口的重写构造函数_Javascript_Html_Dom_Overriding - Fatal编程技术网

JavaScript中元素接口的重写构造函数

JavaScript中元素接口的重写构造函数,javascript,html,dom,overriding,Javascript,Html,Dom,Overriding,我想在默认情况下为所有DOM元素设置id属性。重要的一点是,它应该发生在元素的构造过程中(当浏览器解析HTML代码和创建HTML元素时,以及在将它们附加到DOM树之前)。例如,如果我的网站的HTML代码如下: //元素的重写构造函数 这是一段 这是另一段 这应该行得通 let all=document.getElementsByTagName(“*”); for(设i=0;i

我想在默认情况下为所有DOM元素设置id属性。重要的一点是,它应该发生在元素的构造过程中(当浏览器解析HTML代码和创建HTML元素时,以及在将它们附加到DOM树之前)。例如,如果我的网站的HTML代码如下:


//元素的重写构造函数

这是一段

这是另一段

这应该行得通

let all=document.getElementsByTagName(“*”);
for(设i=0;i
这应该行得通

let all=document.getElementsByTagName(“*”);
for(设i=0;i}
首先要检查元素是否有id,这样就不会替换它。除此之外,如果动态地向DOM添加新元素会怎么样?我建议使用
MutationObserver
设备,并为后者制定策略。不,它不能解决我的问题。在我的问题中,解决方案应该在元素构造期间以及附加到DOM之前将id添加到元素。@nxbit您可以调用makeId函数,就像您创建了名为ele的元素一样,然后您可以将其id设置为
ele.setAttribute('id',makeId(6))
创建元素时以及将其附加到DOM@TalmacelMarianSilviu我已经更新了代码,谢谢你指出这一点。你应该先检查元素是否有id,这样你就不会替换它了。除此之外,如果动态地向DOM添加新元素会怎么样?我建议使用
MutationObserver
设备,并为后者制定策略。不,它不能解决我的问题。在我的问题中,解决方案应该在元素构造期间以及附加到DOM之前将id添加到元素。@nxbit您可以调用makeId函数,就像您创建了名为ele的元素一样,然后您可以将其id设置为
ele.setAttribute('id',makeId(6))
创建元素时以及将其附加到DOM@TalmacelMarianSilviu我已经更新了代码,谢谢你指出这一点。你能解释一下为什么你需要这个“功能”吗?也许你真正的问题可以用其他方式解决,你能解释一下为什么你需要这个“功能”吗?也许你真正的问题可以用其他方法解决不幸的是,这并不能解决我的问题。请再次阅读该问题。好的,这是为了回答您问题中的“或者这个问题是否有其他解决方案?”我的意思是“任何其他解决方案”,用于在附加到DOM之前设置id属性。如果您的解决方案在这之后设置了id,则没有任何帮助。谢谢你的评论。不幸的是,这并不能解决我的问题。请再次阅读该问题。好的,这是为了回答您问题中的“或者这个问题是否有其他解决方案?”我的意思是“任何其他解决方案”,用于在附加到DOM之前设置id属性。如果您的解决方案在这之后设置了id,则没有任何帮助。谢谢你的评论。
document.addEventListener('DOMContentLoaded', () => {
  let elements = document.querySelectorAll('body *');
  elements.forEach((elem => {
    if (!elem.getAttribute('id')) {
      elem.setAttribute('id', btoa(window.crypto.getRandomValues(new Uint32Array(1))[0]));
    }
  }));
});