0

ログをWebページにダンプしようとすると本当に奇妙です。

iPhoneからWebページにログをプルできるWebプラグインを備えた基本的なアプリケーション(xcode)があります。

しかし、どういうわけか、他のjsファイルに配置されたメソッドを呼び出そうとすると、「メソッド」が定義されていません

xcode-Web構造:

ここに画像の説明を入力してください

socket.htmlのスニペット:

 <script type="text/javascript" src="src/js/script.js"></script>


    <script type="text/javascript">

        $(document).ready(main);

        // Run when document.ready fires
        function main() {


            $('#btnClear').click(function() {

                clearTable();
            }); 

        }
 ....
 </script>

clearTableisメソッドはファイルで定義されており、メソッドが呼び出さsrc/js/script.jsれたため、ロードされていることがわかります。onLoad

script.jsのスニペット:

$(function() {

   ....

  function onLoad(){
    ....
   }

   function clearTable(){
    ....
    }

onLoad();
});

誰かが理由を知っていますか?

私はこのプロジェクトをLinuxに対応させましたが、すべて正常に動作します。すべての依存関係はうまく機能します。

ありがとうございました、

4

1 に答える 1

2

これはスコープの問題が原因でclearTable、匿名関数内で定義されているため、そのスコープ内でのみ使用できます。

使用できない別のスコープから呼び出そうとしています。

解決策は、グローバルスコープでclearTableを定義することです。元

$(function() {

    // ....

    function onLoad() {
        // ....
    }

    window.clearTable = function() {
        // ....
    }

    onLoad();
});

問題:フィドル
解決策:フィドル

別の解決策

var clearTable, isAutoScroll; //Declare these as global variables
$(function() {

    // ....

    function onLoad() {
        // ....
    }

    //note this is a function variable and there is no `var`
    clearTable = function() {
        // ....
    }

    //note there is not `var` used while defining the variable
    isAutoScroll = false;

    onLoad();
});
于 2013-03-25T13:21:40.887 に答える