为什么两个“document.write(document.links [i] .href)”是错误的?

时间:2015-09-23 10:44:12

标签: javascript html

我是Javascript初学者。

我正在学习浏览器对象模型。

然后,我收到了Chrome控制台的错误消息。

我的代码如下。

<html>
<head>
    <title>
    </title>
    <meta charset="UTF-8" />
    <script type="text/javascript">
    function showLinks() {
        showLinks_NOT_ERROR1();
        showLinks_NOT_ERROR1();
        showLinks_WANTED_BUT_ERROR();
    }

    function showLinks_NOT_ERROR1() {
        console.log(document.links[0].href);
        console.log(document.links[1].href);
    }
    function showLinks_NOT_ERROR2() {
        alert(document.links[0].href);
        alert(document.links[1].href);
    }
    function showLinks_NOT_ERROR3() {
        document.write(document.links[0].href);
    }
    function showLinks_WANTED_BUT_ERROR() {
        document.write(document.links[0].href);
        document.write(document.links[1].href);
    }

    </script>
</head>
<body onload="showLinks();">
    <a href="http://www.google.com">google</a>
    <a href="http://www.yahoo.com">yahoo</a>
</body>
</html>

正如您在showLinks_NOT_ERROR3中看到的那样,只有一个document.write(document.links[0].href);没有错误,但有两个document.write(document.links[0].href); document.write(document.links[1].href);有错误。

为什么会发生此错误?

1 个答案:

答案 0 :(得分:0)

继续我的评论: 使用document.write时请务必注意:

'document.write()'用于写入文档流。

在已关闭的文档流上调用'document.write()'会自动调用document.open(),这将清除文档。

请参阅此帖中标记的正确答案: document.write clears page

<!DOCTYPE html>
<html>
    <head><title>Test</title></head>
    <body>

    <a href="http://www.google.com">google</a>
    <a href="http://www.yahoo.com">yahoo</a>

        <script type="text/javascript">
        function showLinks() {
            showLinks_NOT_ERROR1();
            showLinks_NOT_ERROR2();
            showLinks_WANTED_BUT_ERROR();
        }

        function showLinks_NOT_ERROR1() {
            console.log(document.links[0].href);
            console.log(document.links[1].href);
        }
        function showLinks_NOT_ERROR2() {
            alert(document.links[0].href);
            alert(document.links[1].href);
        }
        function showLinks_NOT_ERROR3() {
            document.write(document.links[0].href);
        }
        function showLinks_WANTED_BUT_ERROR() {
            document.write(document.links[0].href);
            document.write(document.links[1].href);
        }
        showLinks();
        </script>
    </body>
</html>

此代码应该适合您。这里showLinks函数在文档流关闭之前被调用。