0

根据 HTML 规范(http://www.w3.org/TR/html5/browsers.html#named-access-on-the-window-object),窗口对象应该动态包含页面中的元素被“命名”。在我的例子中,具有关联的 id 属性的输入元素应该存在于 Window 对象上。

但是,根据下面的 HTML(通过 HTML5 验证),如果输入元素位于表单元素下方,IE 将无法通过它在窗口对象上的 id 识别输入元素。

以下 HTML 将在 IE8 和 IE10 中显示“对象”警报,然后显示“未定义”警报。为什么?在 FireFox 和 Google Chrome 中,它显示“对象”的两个警报。有什么我想念的吗?

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>HTML5 Standards mode</title>
    </head>
    <body>
        <input type="button" id="outerbutton" value="outer button">
        <form>
            <input type="button" id="innerbutton" value="inner button">
        </form>
        <script>
            window.onload = function(e)
            {
                alert(typeof outerbutton);
                alert(typeof innerbutton);
            };
        </script>
    </body>
</html>
4

1 回答 1

1

outerbuttonasndinnerbutton不会自动成为全局 JavaScript 变量,只是因为您添加了一些恰好包含具有相同 ID 的元素的 HTML。

您需要使用 DOM 方法来获取元素:document.getElementById('outerbutton')

另外,您的元素未命名。您正在使用 ID。

如果您使用过:

<input type="button" name="pinky" id="outerbutton" value="outer button">

你可以使用

alert(document.forms[0].pinky.value);

...但这要求元素是表单集合的成员。所以这将适用于“innerbutton”而不是“outerbutton”。

于 2013-04-02T19:45:18.180 回答