为什么document.write()之后的代码没有被执行?

Arv*_*jam 3 javascript

我有以下JavaScript.

<html>
    <head>
        <script language="JavaScript">
            function fdivisible()
            {
                document.write("<h1> Just a javascript demo</h1>");
                var x=document.forms["aaa"]["txt1"].value;  
                alert(x);   
            }
        </script>
    </head>
    <body>
        <form action="#" name="aaa">
            Enter a no. : <input type="text" name="txt1" id="txt1" />
            <input type="button" value="Click" onclick="fdivisible();">
        </form>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

问题是,JS函数的第一行正在执行,其余部分被忽略.如果我注释掉第一行,则执行其余代码.任何人都可以向我解释为什么会这样吗?

Jam*_*ice 7

因为调用document.writeimplicity调用document.open,它会清除调用它的文档:

如果目标中存在文档,则此方法将清除它

调用之后document.write,您尝试获取引用的元素不再存在于DOM中,并且会引发错误.如果您查看错误控制台,它应该是以下内容:

TypeError: Cannot read property 'txt1' of undefined


Den*_*ret 6

document.write 只能在初始加载文档时使用.

如果要在调用函数时插入H1,则可以替换

document.write("<h1> Just a javascript demo</h1>");
Run Code Online (Sandbox Code Playgroud)

var h1 = document.createElement('h1');
h1.innerHTML = " Just a javascript demo";
document.body.appendChild(h1);
Run Code Online (Sandbox Code Playgroud)