0

当我尝试将日志转储到网页时,这真的很奇怪。

我有一个带有 Web 插件的基本应用程序(在 xcode 中),它允许我将日志从 iPhone 拉到网页。

但是,不知何故,当我尝试调用放置在其他 js 文件中的方法时,我得到:"method" is not defined

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 回答