我用一个名为'setVisibilityOfWeekdaySelectbox'的函数编写了一个javascript类。我创建了对象并调用函数init()。此功能包含以下代码。当我调用init()时,将调用函数'setVisibilityOfWeekdaySelectbox'。当我更改频率选择框时,firebug说无法找到该功能。
function ReportDefinition(options) {
this.options = options;
}
ReportDefinition.prototype.init = function(){
// change event of a select box
$("#frequency").change(function(){
this.setVisibilityOfWeekdaySelectbox();
this.getReportTemplate().setFrequencyInformation();
});
this.getReportTemplate().setFrequencyInformation();
this.setVisibilityOfWeekdaySelectbox();
});
ReportDefinition.prototype.setVisibilityOfWeekdaySelectbox = function (){
if($("#frequency").val() === undefined){
return;
};
if($("#frequency").val() === "WEEKLY"){
$("#weekday_div").show();
} else {
$("#weekday_div").hide();
}
}
如何更改课程以使其有效?
答案 0 :(得分:1)
this
不是您对象的实例,而是元素本身。
声明一个var来实例化你的对象(在一个可以被事件访问的范围内,例如全局,哈哈):
var report = new ReportDefinition();
report.init();
然后,在事件内部,从实例中调用它:
$("#frequency").change(function(){
report.setVisibilityOfWeekdaySelectbox();
});
我不知道代码中的哪个位置是getReportTemplate()
,但它在活动中也可能无效。你也必须修复它的实例。