5

JavaScript 関数 B を呼び出すと、Firefox の JavaScript コンソールには関数 A が定義されていないと表示されましたが、Chrome ブラウザーでは定義されています。そして、ボディ セグメントで関数 "A" を呼び出すと、次のようになります。

<input type="button" onclick="A()" value=" ..A.. ">

Firefox は、関数 B が定義されていないと述べています。なんで?

<html>
    <head>
        <script language="javascript" type="text/javascript">
            function B() {
                alert(" hi B ");
                document.write('<br><br><input type="button" onClick="A()" value=" ..A..">');
            };

            function A() {
                alert(" hi A");
                document.write('<br><br><input type="button" onclick="B()" value=" ..b..">');
                if (window.WebCL == undefined) {
                    alert("Unfortunately your system does not support WebCL. ");
                    return false;
                }
            }
        </script>
    </head>
    <body>
        <input type="button" onclick="B()" value=" ..B.. ">
    </body>
</html>
4

3 に答える 3

4

最初の書き込みでドキュメントの内容がクリアされ、関数 A が未定義になります。

于 2012-04-07T17:22:46.757 に答える
3

問題は、ページが読み込まれた後に呼び出すことですdocument.write。これにより、埋め込まれたスクリプトを含む、ページの既存のコンテンツが効果的に消去されます。代わりにDOM 操作メソッドを使用する必要があります。

于 2012-04-07T17:26:03.253 に答える
2

これを試してください:

<html>
<head>
<script language="javascript" type="text/javascript">

var  A = function() {
   alert(" hi A");
   document.write('<br><br><input type="button" onclick="B()" value=" ..b..">');
   if (window.WebCL == undefined) {
     alert("Unfortunately your system does not support WebCL. ");
     return false;
   }
 }  

 function B(){
   alert(" hi B ");     
   document.body.innerHTML = ('<br><br><input type="button" onClick="new A()" value=" ..A..">'); 
 }

    </script>
    </head>

<body>
   <input type="button" onclick="B()" value=" ..B.. ">
</body>

</html>
于 2012-04-07T18:03:22.593 に答える