我第一次点击按钮,什么都没有。第二次我点击代码运行。我在chrome或IE中运行页面test.html,没关系。如何在加载的脚本中获取代码以运行第一次单击?我是一个js noob。
/* test.html */
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>start</title>
<script type="text/javascript" src="t01.js">
</script>
</head>
<body>
<input type="text" id="txt1" />
<input type="button" id="submit" onclick="getSent(document.getElementById('txt1').value)"
value=" OK " />
<div id="reply">reply</div>
</body>
</html>
/* t01.js */
window.onload = function () {
}
function getSent(str) {
while (1) {
load_script("relg.js");
dof();
reply = "Reached end of loop.";
break;
} // end main loop
document.getElementById("reply").innerHTML = reply;
}
function load_script(filename){
var fileref=document.createElement('script');
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", filename);
if (typeof fileref!="undefined")
document.getElementsByTagName("head")[0].appendChild(fileref);
}
/* relg.js */
function dof() {
alert("b");
}
答案 0 :(得分:0)
脚本需要一些时间来加载,尝试这样的事情:
function getSent(str) {
load_script("relg.js");
return;
}
function load_script(filename){
var fileref=document.createElement('script');
fileref.setAttribute("type","text/javascript");
fileref.onload = function () {
dof();
return;
}
fileref.setAttribute("src", filename);
document.getElementsByTagName("head")[0].appendChild(fileref);
}
另一种方法是为regl.js
创建一个IIFE(立即调用的函数表达式),而不是在主脚本中调用dof()
:
(function dof() {
alert("b");
}());
现在dof()
将在解析到页面后立即执行。