1

こんにちは私の質問は、問題がどのように解決されたかについてです...友人はhtmlのようなコードを持っています:

<div id="result">
    <script type="text/javascript">
        function selectColor(value){
            return "#319336";
        }
    </script>
</div>

jQuery .load() 呼び出しを使用すると、結果として、このような JavaScript 関数を送信する関数を含む PHP ファイルが呼び出されます。

<?php
    function returnFuntion(){
        return '<script type="text/javascript">
            function selectColor(value){
                switch(value){
                    case "a":
                        return "#000000";
                        break;
                    case "b":
                        return "#FFFFFF";
                        break;
                    default:
                        return "#319336";
                }
        }</script>';
    }
?>

これがどのように機能するかはわかりませんが、すべてのブラウザーで機能します。友人は「心配する必要はありません」と言っています。何が起こるのですか?JavaScript が古いコードではなく新しいコードを認識するのはなぜですか? それは正しい方法ですか?元の問題は、PHP から取得した MySQL の値で JavaScript 関数の戻り値を変更する必要があることでした。

4

4 に答える 4

1

これらは関数宣言であり、パーサーはコードが読み込まれる前に常にこれらの宣言を読み取ります。

したがって、最初の関数は、2 番目の関数が定義されたときに単純にオーバーライドされます。

  function a(){

        alert('Hello');
    }

    function a(){

       alert('Second Function !!');
    }

    a(); // Call-- 

フィドル

于 2012-10-23T17:05:02.400 に答える
0

JavaScriptをロードする場合は、getScript()を使用します

外部ファイルを書いているのと同じように、phpコードでコンテンツを返すようにします。コンテンツタイプも必ず設定してください。

于 2012-10-23T17:32:53.217 に答える
0

理想的には両方のスクリプトが完全に機能するはずですが、最初のスクリプトは実際には div 内に JavaScript を記述する良い方法ではありません。機能しない場合は、関数がロードされる前に呼び出された可能性があります。2 つ目は問題ありません。なぜなら、php はその JavaScript をフォーマットしており、ページのどこかに印刷する準備ができているからです。覚えておくべき重要なことは、最初に関数をロード/出力してから、エラーを回避するために呼び出す必要があるということです。

于 2012-10-23T17:05:30.207 に答える
0

@luismy、サーバーとクライアントの間でスクリプトではなくデータを交換する方が常に良いでしょう。クライアント側にUIロジックを実装し、サーバーにアプリケーションロジックを実装しないのはなぜですか? 特にこの例では、XHR 呼び出しを行っても意味がありません。

于 2012-10-23T17:10:33.910 に答える