Javascript: access DOM elements without getElementById [duplicate]

北慕城南 提交于 2019-11-28 09:49:52

问题


Below is some sample code.

<body>
    <div id="wrapper" class="access">
        <form id="test">
            <input id="password"></input>
            <input type="submit"></input>
        </form>  
    </div>
    <script>
        console.log(password);
        alert(wrapper.className);
    </script>
</body>

The console log returns the DOM element with id password. The alert is "alert".

It works in normal code as well, e.g. var x = wrapper.className;

Surely this is not right? What is the point of document.getElementById, $('#password') or goog.dom.getElement if it just works like this? Are these functions just for legacy now?

It works in Firefox, Chrome and Safari, incidentally.


回答1:


This answer should give you a lot to go on:

https://stackoverflow.com/a/6381766/944006

You shouldn't use these variables, and you DEFINITELY don't want to depend on them working correctly across browsers.




回答2:


Backwards compatibility is the reason IDs are mapped to properties of the window.

It's also a major reason to avoid global variables - in fact some browsers will outright break if you try to use a global variable that's the same name as an element's ID.



来源:https://stackoverflow.com/questions/23121526/javascript-access-dom-elements-without-getelementbyid

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!