JavaScript: переменная не определена
Когда я использую переменную в JavaScript, это выдает ошибку
ReferenceError: getalletje не определено
в зависимости от того, где я это заявляю.
Здесь я объявляю переменную:
get_name: function(){
var getalletje = 5;
return getalletje;
},
Где я пытаюсь использовать переменную:
self.$('.geldinuit-button').click(function(){
self.screen_selector.show_popup('geldinuit',{
message: _t('Popup titel'),
comment: _t('getalletje'),
confirm: function(){
window.alert(getalletje);
},
});
});
Это дает ошибку, как это.
Но: если я поставлю var getalletje = 5;
чуть выше self.$('.geldinuit-button').click(function(){
, оно работает.
Что-то еще мне нужно сделать?
Редактировать для Шомз: Это полный код:
.............
self.set_smart_status(status.newValue);
});
this.$el.click(function(){
self.pos.connect_to_proxy();
});
},
});
module.PosWidget = module.PosBaseWidget.extend({
template: 'PosWidget',
init: function() {
this._super(arguments[0],{});
this.pos = new module.PosModel(this.session,{pos_widget:this});
this.pos_widget = this; //So that pos_widget's childs have pos_widget set automatically
.............................
............................
get_name: function(){
var getalletje = 5;
return getalletje;
},
...........................
...........................
self.$('.geldinuit-button').click(function(){
self.screen_selector.show_popup('geldinuit',{
message: _t('Popup titel'),
comment: _t('getalletje'),
confirm: function(){
window.alert( this.get_name() );
},
});
});
..........................
2 ответа
Это ограниченная проблема - объявленная вами переменная доступна только локально. Чтобы получить его значение, вы можете сделать что-то вроде:
confirm: function(){
window.alert( yourObject.get_name() );
},
где yourObject
это объект, который вы определили get_name
метод для.
Вы не можете получить доступ к переменной вне функции, в которой вы ее объявили. Если вы хотите получить доступ к переменной глобальным способом, вы должны объявить ее вне get_name. В вашем случае я не вижу смысла, но следующее должно работать:
var getalletje = 0;
get_name: function(){
getalletje = 5;
return getalletje;
},
self.$('.geldinuit-button').click(function(){
self.screen_selector.show_popup('geldinuit',{
message: _t('Popup titel'),
comment: _t('getalletje'),
confirm: function(){
window.alert(getalletje);
},
});
});
также не должен:
comment: _t('getalletje'),
становиться
comment: _t(getalletje),
ОБНОВИТЬ
Кроме того, в вашем случае это объявление не полезно. Я не знаю, изменили ли вы свой код, когда задавали свой вопрос, но в этом случае делаете только:
self.$('.geldinuit-button').click(function(){
var getalletje = 5;
self.screen_selector.show_popup('geldinuit',{
message: _t('Popup titel'),
comment: _t('getalletje'),
confirm: function(){
window.alert(getalletje);
},
});
});