JavaScript getElementById 短语法有效。使用起来可以吗?

标签 javascript

这是我的 HTML 代码:

<div id=demo1></div>
    <button onclick=demo()>this is button</button>
}

这是我的 JavaScript 代码:

function demo(){
  demo1.innerHTML="this is good syntax";
}

这是一个展示其如何完美工作的链接...在您说此语法不起作用之前请先检查该链接。

https://codepen.io/navehazan/pen/QgEeOr

我的问题是,当我只能使用 demo1.innerHTML 时,为什么还要使用 document.getElementById("demo1").innerHTML

最佳答案

您正在寻找的称为“命名访问”。具有“name”或“id”属性的元素直接作为属性附加到 dom。您甚至可以使用窗口对象 window['demo1'] 访问该元素。因此,如果元素具有文档中唯一的 id 或名称,则可以通过这种方式选择元素。

警告:

如果你有这样的标记怎么办?

<div id=demo1></div>
<input name="demo1"/>
<button onclick=demo()>this is button</button>

https://codepen.io/pen/VWKqdv

标记有效,因为您没有重复的 ID。但命名访问的工作方式是将“id”和“name”关联在一起。因此,在这种情况下,您将无法通过命名访问来选择元素,因为“demo1”将与“div”和“img”关联,并且它将返回一个数组。为了避免这个问题,我们使用 document.getElementById()

命名访问: https://www.w3.org/TR/html5/browsers.html#named-access-on-the-window-object

关于JavaScript getElementById 短语法有效。使用起来可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44507898/

相关文章:

javascript - 在 YouTube API 中检测事件源

javascript - 如何在 Meteor 中构建具有重复值的 MongoDB $in 查询

javascript - 如何使用 HTML 中触发的 swift/cordova 代码打开 URL? (通过 JavaScript?)

javascript - 坚持尝试在 IE 中模仿 JavaScript 动态属性

javascript - 无法用js click()打开多个A

JavaScript RegEx.test() 有条件地中止/提前返回函数

javascript - 根据组合框中不同的选定值绑定(bind)字段状态(禁用或隐藏)

javascript - Chrome 扩展程序可重定向到带参数的 URL

javascript - 将 ng-pluralize 指令转换为 Javascript 函数。

javascript - Konami 代码帮助 – 两种不同的 KeyDown 输入