-3

我有以下 JS 代码。当 test.php 被加载并且我点击按钮显示功能没有被调用。我在 FF 上尝试这个。任何建议这里有什么问题。

测试.php

<script type="text/javascript" src="http://localhost/test1.js"></script>
<script type="text/javascript" src="http://localhost/test2.js"></script>

test1.js

function show()
{
    alert("hello");
}

test2.js

      function showHTML()
        {
        var html = "<!DOCTYPE html>";
        html += "<html><body>";
        html += "<input type='button' name='button'  style='width:100px;height:50px;' onclick='show();' />";
        html += "</body></html>";
        document.write(html);
        }

window.addEventListener("load", function() {
      alert("eevnet");
      showHTML();
    }, false);
4

1 回答 1

0

test2.js文件被执行时,它会添加一个完整的文档,之后是这样的:

<!DOCTYPE html>
<html><body>
<input type='button' name='button'  style='width:100px;height:50px;' onclick='show();' />
</body></html>

不再有任何 test1.js 文件,test1.js包含在您的 HTML 文档之外。

如果你真的想在你的脚本中生成整个 html,你可以做的是从一个有效的 HTML 文件开始,在其标题中包含 js 脚本,然后只更改正文,例如像这样

function showHTML() {
    var html = "<input type='button' name='button'  style='width:100px;height:50px;' onclick='show();' />";
    document.body.innerHTML = html;
}
document.onload = showHTML();

但通常的做法只是添加或更改元素,而不是用 HTML 字符串替换整个正文。


编辑:在我的测试中,无论是在 FF 还是 Chrome 中,浏览器都会在一定程度上保留定义的功能,test1.js即使在文档之后开始,并且整个工作正常。所以我投票结束也不是一个真正的问题。


编辑2,明确真正的问题:

事实上,OP 从onload事件处理程序中调用了 showHTML 函数。因此,document.write在文档加载后调用 ,这导致文档被新的替换

在初始执行期间永远不要document.write分开。

于 2013-05-28T06:42:31.723 回答