【问题标题】:What is the return type of document.getElementById()document.getElementById() 的返回类型是什么
【发布时间】:2017-06-19 14:46:13
【问题描述】:

这个sn-p中变量“元素”的类型是什么? 我以为它是一个数字(一个 ID 或其他东西),但现在,我不知道。 代码有效,但我不明白,为什么 var 元素可以在 for 循环中使用,就像数组一样。对此有什么解释吗?

   <script type="text/javascript">
            function showAtrributes() {
                var element = document.getElementById("videos");
                var listAttributes = "";
                for(var attribute in element) {
                    var valueOfAtrrib = element.getAttribute(attribute);
                    listAttributes = listAttributes + attribute + ": " + valueOfAttrib + "\n";
                }
                alert(listAttributes);
            }
        </script>

【问题讨论】:

标签: javascript


【解决方案1】:

getElementById() 方法返回具有 ID 的元素 具有指定值的属性。 [……] 如果不存在具有指定 ID 的元素,则返回 null。

所以它返回一个 HTMLElement 对象

source

【讨论】:

    【解决方案2】:

    document.getElementById()的返回类型是什么

    Element。它返回对 DOM 中元素的实际对象的引用(或 null,如果没有找到该 id)。详情:

    我还以为是一个数字(身份证什么的)

    不,那是"video"(您用来查找它的字符串)。也可以从 Element 对象的 id 属性访问它。

    代码有效,但我不明白,为什么 var 元素可以在 for 循环中使用,就像数组一样。

    for-in 主要不是用于数组,而是用于对象。它适用于数组的唯一原因是数组是对象。 (有关详细信息,请参阅 this question's answersthis page on MDN。)DOM 元素是对象,因此您可以通过 for-in 循环遍历它们的可枚举属性。

    【讨论】:

      【解决方案3】:

      document.getElementById()的返回类型为Element Object或null。请参考MDN的以下链接:

      【讨论】:

        【解决方案4】:

        看起来你真的在质疑为什么 for 循环有效,而不是 getElementById 返回什么样的对象。阅读这篇文章:

        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in

        for(var in ....) 语法导致 Javascript 遍历 .... 指定的对象的属性

        【讨论】:

          【解决方案5】:

          返回类型可以是 Web 浏览器的程序员为所使用的 JS VM 库定义的任何内容,以创建 Javascript 的特定实现。例如,使用 SpiderMonkey 的 webcwebbrowser 返回一个 HTMLElement JSClass 的 JSObject,它通过在底层内部 HTMLElement 对象上调用 CreateJSObject 来获得。 JSObject 是对 JS 脚本可见的对象的内部 VM 库表示,例如 HTMLElement。脚本中的 HTMLElement 实际上是访问从 HTMLElement JSClass 逻辑实例化的 JSObject,其中 JSObject 和 JSClasses 是 C++ 类。 HTMLElement JSObject 也有一个对应的 HTMLElement 类的 C++ 原生编组对象。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-04-04
            • 2018-01-17
            • 1970-01-01
            • 1970-01-01
            • 2011-02-07
            • 1970-01-01
            • 2015-12-08
            • 2021-02-07
            相关资源
            最近更新 更多