0

初めてボタンをクリックしても、何もありません。2 回目は、コードの実行をクリックします。ページ test.html を chrome または IE で実行しますが、問題ありません。ロードされたスクリプトのコードを取得して、最初のクリックを実行するにはどうすればよいですか? 私はjs初心者です。

/* 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");
}
4

1 に答える 1

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);
}

もう1つの方法は、にIIFE(即時regl.js呼び出し関数式)を作成dof()し、メインスクリプトではまったく呼び出さないことです。

(function dof() {
    alert("b");
}());

dof()これは、ページに解析されるとすぐに実行されます。

于 2013-02-13T18:03:25.723 に答える