2013-04-09 133 views
0

我有以下(简化)的java脚本,html和包含的java脚本(js)文件。我的问题是,我得到一个错误,该方法不存在于syncData函数调用。我得到的事实是,我可以调用同步函数,因为它在window.Main范围内,但为什么我不能调用syncData,它包含在.js脚本文件中,我该如何调用它?Javascript函数调用范围

$(window).load(function() { 
    Main.init(); 
}); 

window.Main = { 
sync: function() { 
    alert("sync"); 
}, 
init: function() { 
    var self = this; 
    self.displayDialog(); 
}, 

displayDialog: function() { 
    $("#dialog-confirm").dialog({ 
     resizable: false, 
     height: 240, 
     width: 500, 
     modal: true, 
     buttons: { 
      "Sync Data": function() { 
       $(this).dialog("close"); 
       Main.sync(); 
       syncData(); 
      }, 
      Cancel: function() { 
       $(this).dialog("close"); 
       alert("Cancel"); 
      } 
     } 
    }); 
}; 

HTML:

<!DOCTYPE html> 
<head> 
    <title>Pay Items Amounts</title> 
    <script src="Scripts/jquery-1.9.1.js" type="text/javascript"></script> 
    <script src="Scripts/jquery-ui-1.10.2.js" type="text/javascript"></script> 
    <!--<script src="Scripts/jquery.unobtrusive-ajax.js" type="text/javascript"></script>--> 
    <script src="Scripts/jquery.validate.js" type="text/javascript"></script> 
    <script src="Scripts/knockout-2.1.0.js" type="text/javascript"></script> 
    <script src="Scripts/modernizr-2.5.3.js" type="text/javascript"></script> 
    <script src="Scripts/PayItemAmounts.js" type="text/javascript"></script> 
    <script src="Scripts/spin.js" type="text/javascript"></script> 
    <script src="Scripts/syncData.js" type="text/javascript"></script> 
    <link href="Content/jquery-ui.css" rel="stylesheet" type="text/css" /> 
</head> 
<body> 
    <header> 
    </header> 
    <nav> 
    </nav> 
    <section class="dialog-confirmation"> 
     <div id="dialog-confirm" title="Sync Data?" style="display:none"> 
      <p><span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span> 
      <label id="dialog-message"></label> </p> 
     </div> 
    </section> 
</body> 
</html> 

JAVASCRIPT syncData.js FILE: 
syncData: function() { 
    alert("sync"); 
} 
+2

作为呈现(在您的HTML代码块的底部)那'syncData.js'文件是一个语法错误。它就像对象初始化器内部的一部分。 – 2013-04-09 16:02:16

回答

0

因为您尚未定义名为syncData的函数,所以不能拨打syncData()

这(因为它内部没有一个对象字面定义):

syncData: function() { 
    alert("sync"); 
} 

...是一个语法错误。

你应该有:

function syncData() { 
    alert("sync"); 
} 

,或者,如果你真的想要一个函数表达式:

var syncData = function() { 
    alert("sync"); 
} 
0

你的语法不正确。

function syncData() { 
    // whatever 
} 

你觉得应该是一个语法错误。标签(“syncData:”)没问题,但没用。函数声明缺少一个名字,所以这就是(我认为)会产生一个错误。

+0

我必须停止剪切和粘贴...谢谢 – user1897924 2013-04-09 16:10:53