假设我有:
<div id='test1'></div>
我想将其简单地称为:
test1
在代码中。而不是:
document.getElementById('test1');
$('#test1') // if in jquery
我不想做 window.test1 = $('#test1');
我正在寻找一个通用的解决方案。我知道我可能可以使用 init 上的函数迭代所有 id,但是如果 dom 元素是在整个程序中动态创建的,该怎么办?我不想每次添加 dom 元素时都运行为窗口分配 id 的函数。
我希望 test1
(以及页面上的所有 id) 始终成为窗口对象的一部分。默认情况下。有没有办法做到这一点?就像当有人尝试访问不存在的窗口对象时,也许有一种方法可以注入(inject)代码,并且该代码会以某种方式执行 document.getElementById
而无需我这样做明确地写出来。
最佳答案
您可以创建一个代理
,它将属性访问转换为 dom 查找。
const dom = new Proxy(window, {
get(_, name) {
return document.getElementById(name);
}
});
dom.test1.style.position = "static"; // tada
注意:实际上不要这样做
关于javascript - 如何在JavaScript中按名称选择ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47805752/