Javascript必须单击两次按钮才能加载和运行动态脚本
我第一次点击按钮时,什么都没有。第二次单击“代码运行”。我在chrome或IE中运行test.html页面,这无关紧要。如何让加载的脚本中的代码运行第一次单击?我是个笨蛋Javascript必须单击两次按钮才能加载和运行动态脚本,javascript,button,dynamic,loading,Javascript,Button,Dynamic,Loading,我第一次点击按钮时,什么都没有。第二次单击“代码运行”。我在chrome或IE中运行test.html页面,这无关紧要。如何让加载的脚本中的代码运行第一次单击?我是个笨蛋 /* test.html */ <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>start</title> &l
/* 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");
}
/*test.html*/
开始
回复
/*t01.js*/
window.onload=函数(){
}
函数getSent(str){
而(1){
加载_脚本(“relg.js”);
dof();
reply=“已到达循环的末尾。”;
打破
}//结束主回路
document.getElementById(“reply”).innerHTML=reply;
}
函数加载_脚本(文件名){
var fileref=document.createElement('script');
setAttribute(“类型”、“文本/javascript”);
fileref.setAttribute(“src”,文件名);
if(fileref的类型!=“未定义”)
document.getElementsByTagName(“head”)[0].appendChild(fileref);
}
/*relg.js*/
函数dof(){
警报(“b”);
}
加载脚本需要一些时间,请尝试以下操作:
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()
将在解析到页面后立即执行