gpt4 book ai didi

javascript - 如何在 JavaScript 中处理带破折号的 ID? (自动创建全局变量)

转载 作者:行者123 更新时间:2023-11-30 12:23:11 25 4
gpt4 key购买 nike

当您创建 HTML 元素并向其添加 ID 时,例如:

<div id="test"></div>

它将在 Javascript 中作为变量 test 自动可用,无需使用 document.getElementById("test")

我想知道的是当您创建带有破折号的 ID 时会发生什么,例如:

<div id="test-one"></div>

这个元素仍然可以通过一些变量在 Javascript 中使用,或者变量不会被创建?我试图检查 test-onetestOne 的值,但它们都不包含任何内容。

编辑

我认为大多数人都误解了这个问题。我知道用破折号创建变量是完全有效的。

问题是: http://jsfiddle.net/jn33bgkd/

您不需要使用 document.getElementById 因为 Javascript 会自动创建具有相同 ID 名称的全局变量(我知道使用它们是一种不好的做法,我只是想知道什么是行为)但是如果 ID 有破折号,则不会创建这些全局变量。问题是 ID 带有破折号的元素的全局变量是否真的没有创建或使用不同的名称创建。

最佳答案

在JavaScript中,test-one是一个包含两个标识符的表达式,testone- 运营商;本质上,两个不相关变量之间的算术减法。因此,按字面意义编写 test-one 是行不通的。

但是该元素仍然可以使用索引器访问,即 window['test-one']

window['test-one'].innerHTML = 'Test';
<div id="test-one"></div>

请注意,ID 为“test-one”的元素从不反射(reflect)为全局 testOne,否则它会与具有“testOne”的 ID。

此行为最初是非标准的,其根源在于 IE 遗留问题。现在已记录 in HTML5in the HTML Living Standard ,尽管前者认为它是非规范的。据推测,这样做是为了促进与旧文档的跨浏览器兼容性。

相关问题:Do DOM tree elements with ids become global variables?

关于javascript - 如何在 JavaScript 中处理带破折号的 ID? (自动创建全局变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30354750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com