无法从按钮onclick调用Javascript函数

时间:2013-05-28 06:37:08

标签: javascript

我有以下JS代码。当加载test.php并且我点击按钮时,show函数没有被调用。我在FF上尝试这个。任何建议有什么不妥之处。

test.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);

1 个答案:

答案 0 :(得分: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在文档加载后调用,results in the replacing of the document by a new one

在初次执行期间,切勿将document.write分开。