0

我对 Jquery 比较陌生,因此接受答案可能非常明显。我有一个提供功能的插件,但是当我运行我的程序时,我收到控制台错误:

Cannot call method 'createEvent' of undefined 

就像我说的那样,我可能错过了一些简单的东西,但我找不到什么。var desiredValue 是,当然,检索正确的数据,我确保插件在标题中正确链接。如果有人得到任何建议,他们可以提供,将不胜感激!谢谢。

function createEvent(title,location,notes, startDate, endDate){
  var title= "My Appt";
  var location = "Los Felix";
  var notes = "me testing";
  var startDate = "2012-11-23 09:30:00";
  var endDate = "2012-11-23 12:30:00";

  cal.createEvent(title,location,notes,startDate,endDate);
}

var cal;

$(document).ready(function() {
  cal = window.plugins.calendarPlugin;


  $('.calinfo').live('click', function() {    
    var desiredValue = $(this).parent().prev().find('.calendar').val();                                                
    var calInfo = desiredValue.split(',');

    createEvent(calInfo[0], calInfo[1], calInfo[2], calInfo[3], calInfo[4]);
  });                              
});    
4

2 回答 2

1

在校准分配之后放置一个调试点。问题是您的函数中的这行代码:

cal.createEvent(title,location,notes,startDate,endDate);

cal 在该上下文和范围内未定义。

我有一种感觉

cal = window.plugins.calendarPlugin;

未正确分配。

...感谢您的链接(见评论)——@Ohgodwhy。

老实说,那个插件写得不是很好。但是,您应该做的只是编辑函数的第一行:

window.plugins.calendarPlugin.prototype.createEvent = function(title,location,notes, startDate, endDate){

每当您调用该函数时,只需使用 cal.createEvent (您需要编辑 click 事件处理程序。

这听起来很愚蠢,但是...您确定插件 JS 文件已包含并在此脚本之前执行吗?如果您在此脚本执行后包含插件(日历插件 javascript 文件),则 calendarPlugin 对象将不存在(因此,它将保持未定义)!

于 2012-08-09T02:49:13.087 回答
0

这是一个范围问题,它阻止了var cal被提升到顶部。在准备好的函数中移动你的函数声明。你也变得未定义,因为你createEvent作为一个方法调用cal但你还没有创建一个类对象。

$(document).ready(function() {
    var cal;
    cal = window.plugins.calendarPlugin;

    $('.calinfo').live('click', function() {
        var desiredValue = $(this).parent().prev().find('.calendar').val();
        var calInfo = desiredValue.split(',');

        createEvent(calInfo[0], calInfo[1], calInfo[2], calInfo[3], calInfo[4]);
    });

    function createEvent(title, location, notes, startDate, endDate) {
        var title = "My Appt";
        var location = "Los Felix";
        var notes = "me testing";
        var startDate = "2012-11-23 09:30:00";
        var endDate = "2012-11-23 12:30:00";

        cal.createEvent(title, location, notes, startDate, endDate);
    }

});​
于 2012-08-09T02:50:29.120 回答