-3

私は次のJSコードを持っています。test.php が読み込まれ、ボタンをクリックすると、表示機能が呼び出されません。これを 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);
4

1 に答える 1

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全体を本当に生成したい場合にできることは、ヘッダーにjsスクリプトを含む有効なHTMLファイルから始めて、本文のみを変更することです。たとえば、次のようになります。

function showHTML() {
    var html = "<input type='button' name='button'  style='width:100px;height:50px;' onclick='show();' />";
    document.body.innerHTML = html;
}
document.onload = showHTML();

ただし、通常は要素を追加または変更するだけで、本文全体を HTML 文字列に置き換えることはありません。


EDIT :私のテストでは、FF と Chrome の両方で、ドキュメントが開始された後でも、ブラウザは定義された関数をいくらか保持しtest1.js、全体が機能します。だから私も本当の質問ではないとして閉じることに投票します。


EDIT 2、実際の問題を明確にするために:

onload実際、OP はイベント ハンドラーから showHTML 関数を呼び出しました。そのため、document.writeドキュメントのロード後に が呼び出されたため、ドキュメントが新しいドキュメントに置き換えられました

document.write最初の実行中に別の呼び出しをしないでください。

于 2013-05-28T06:42:31.723 に答える