3

私は次のJavaScriptを持っています。

<html>
    <head>
        <script language="JavaScript">
            function fdivisible()
            {
                document.write("<h1> Just a javascript demo</h1>");
                var x=document.forms["aaa"]["txt1"].value;  
                alert(x);   
            }
        </script>
    </head>
    <body>
        <form action="#" name="aaa">
            Enter a no. : <input type="text" name="txt1" id="txt1" />
            <input type="button" value="Click" onclick="fdivisible();">
        </form>
    </body>
</html>

問題は、JS関数の最初の行が実行されており、残りは無視されることです。最初の行をコメントアウトすると、残りのコードが実行されます。なぜそうなのか誰かに説明してもらえますか?

4

8 に答える 8

7

document.write暗黙的に呼び出すためdocument.open、呼び出されたドキュメントがクリアされます。

ドキュメントがターゲットに存在する場合、このメソッドはそれをクリアします

の呼び出し後、document.write参照を取得しようとしている要素はDOMに存在しなくなり、エラーがスローされます。エラーコンソールを見ると、次のようになっているはずです。

TypeError: Cannot read property 'txt1' of undefined

于 2012-12-11T12:35:39.687 に答える
6

document.writeドキュメントの初期ロード中にのみ使用できます。

関数が呼び出されたときにH1を挿入する場合は、次のように置き換えることができます。

document.write("<h1> Just a javascript demo</h1>");

var h1 = document.createElement('h1');
h1.innerHTML = " Just a javascript demo";
document.body.appendChild(h1);
于 2012-12-11T12:34:54.017 に答える
4

document.write(content)は、ドキュメントストリームにコンテンツを書き込みます。

ページの読み込みを続行するには、ドキュメントに書き込んだ後にストリームを閉じる必要があります

document.write("hello");
document.close();
于 2012-12-11T12:42:40.260 に答える
1

dystroyの答えに加えて、次のように置き換えることができますdocument.write

document.body.innerHTML += '<h1>Javascript demo</h1>
于 2012-12-11T12:36:30.763 に答える
1

document.write呼び出しでDOMを破棄しています。一部のブラウザでは、これによってグローバル変数も破棄されます。

代わりに以下を使用してください:

var element = document.createElement('h1');
element.appendChild(document.createTextNode('text'));
document.body.appendChild(element);
于 2012-12-11T12:45:50.490 に答える
0

document.write()すべてのJSステートメントの最後に使用します。script要素はその後実行されることはありません。

于 2012-12-11T12:36:47.720 に答える
0

これを試して:

var x=document.getElementById(txt1).value;
alert(x);
于 2012-12-11T12:37:47.590 に答える
0

次のコマンドでドキュメントに書き込むことができます

    document.write("<h1> Just a javascript demo</h1>");

一度だけ、それはドキュメント全体に適用されます。配置する場合は、クラス/ IDを追加してから、そのクラス/IDにテキストを配置する必要があります。

于 2012-12-11T12:38:07.060 に答える