我有以下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);
答案 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
分开。