2013-03-06 36 views
0

我有PHP文件这样onDataChange不是函数

... html/php code ... 

<script> 
    (function(){ 
    window.mypage.onDataChange(data); 
    })(); 
</script> 

...html/php code ... 

<script> 
    (function(){ 
    window.mypage.onDataChange = function(data){ 
      ... 
      }; 
    })(); 
</script> 

所以我们可以看到,我打电话给我在页面顶部功能,并描述在底部这个功能,但不能uderstand为什么我越来越

{"msg":"TypeError: window.mypage.onDataChange is not a function","url":"/","lineNumber":"137","browser":{"mozilla":"true","version":"19.0"}} 

什么可能是错的?当我测试我的脚本时,它在控制台中没有任何错误的情况下工作正常。

回答

1

您需要在调用它们之前定义你的函数。采用这种结构化的方式,它不会这样做。

或者切换两段代码的顺序(window.mypage.onDataChange = function ...需要在函数的调用之上),或者直接将函数调用放入onload。

jQuery的风格例如:

$(function(){ 
    window.mypage.onDataChange(data); 
}); 

HTML/PHP Code 

工作代码:

<script type='text/javascript'> 
    window.mypage = { 
    onDataChange: function(data){ 
    console.log(data); 
    } 
    } 

    var data = "This is data, yay"; 
    window.mypage.onDataChange(data); 
</script> 
+0

但是,为什么?此代码工作正常 - http://jsfiddle.net/anbvH/ – MyMomSaysIamSpecial 2013-03-07 08:08:06

+0

该代码工作正常,因为您的onclick没有被触发,直到* window.mypage.onDataChange被定义之后。 – Doug 2013-03-07 14:04:04

+0

啊,好吧,谢谢,但事实证明,问题是错误的PHP“如果”的声明,在某些情况下,JS脚本无法访问! – MyMomSaysIamSpecial 2013-03-08 07:51:02