为什么这个脚本只提供一半的输出?

时间:2013-02-18 15:29:47

标签: javascript

这是功能:

function funct1()
{
    document.getElementById("demo").innerHTML="Something";
    document.write("Mexico!");
}

输出仅为:

Mexico

当我点击页面上的按钮时,我希望输出为:

Something
Mexico

2 个答案:

答案 0 :(得分:2)

在这种情况下,document.write()没有按照您的想法行事。它清除文档的内容,并写入Mexico!(请参阅Quentin的答案,以获得更详细的解释原因)。如果删除此行,则可以看到第一个语句正确执行。

如果要更新第一段,还要添加另一段,则应使用以下代码:

function funct1()
{
    document.getElementById("demo").innerHTML = "Something";  

    // Create a new <p> element, set its HTML and then append it:
    var newP = document.createElement('p');
    newP.innerHTML = 'Mexico!';
    document.body.appendChild(newP);
}

您可以看到有效的jsFiddle here

答案 1 :(得分:2)

设置演示的innerHTML后,您拨打document.write。由于此时文档处于关闭状态,因此会隐式调用document.open 删除整个现有文档(包括您刚刚分配给innerHTML的内容) 。 然后您将墨西哥!写入新文档。

在DOM准备好之后永远不要调用document.write(并且在任何其他时间都不要这样做)。改为使用DOM操作。