jQuery- 为什么为全局变量赋值在函数中不起作用
jQuery- Why assigning a value to a global variable doesn't work inside a function?
我正在构建一个带有 2 个按钮的滑块,以使数字升高/降低。这是jsfiddle。
这有效:
var update_num;
$('.plus').on('click', function() {
update_num = $('output').text()*1;
if (update_num < 100) {
$('output').text(update_num + 1);
} else {
$('output').text(100);
}
});
$('.minus').on('click', function() {
update_num = $('output').text()*1;
if (update_num > 0) {
$('output').text(update_num - 1);
} else {
$('output').text(0);
}
});
但这不起作用:
var update_num = $('output').text()*1;
$('.plus').on('click', function() {
if (update_num < 100) {
$('output').text(update_num + 1);
} else {
$('output').text(100);
}
});
$('.minus').on('click', function() {
if (update_num > 0) {
$('output').text(update_num - 1);
} else {
$('output').text(0);
}
});
为什么会这样,因为 var update_num 是全局的,所有其他函数都应该能够读取它?使这段代码干燥的最佳方法应该是什么?
这里的问题是update_num的值在第二个代码段中只设置一次。例如,如果其 2.然后,每次单击减号按钮时,值为 (2-1),单击加号按钮时的值为 (2+1)。update_num的值应随着每次按钮单击而更改。
你的问题是为什么给全局变量赋值不起作用。但在第二个代码中,从不通过单击按钮完成分配。试试这个:
var update_num = $('output').text()*1;
$('.plus').on('click', function() {
if (update_num < 100) {
$('output').text(++update_num);
} else {
$('output').text(100);
}
});
$('.minus').on('click', function() {
if (update_num > 0) {
$('output').text(--update_num);
} else {
$('output').text(0);
}
});
记住一件事,全局变量是危险的。假设您最初update_num
为 34。依此类推$('.plus').on('click', function()
值变为 35。但是,如果您再次单击,update_num将不会更改,因为它仅在var update_num = $('output').text()*1;
处设置一次 没有双向绑定,这意味着如果您更改$('output').text()*1;
update_num
的值也会更改您可以搜索谷歌并了解有关two way binding
或Observable Javascript Pattern
的更多信息。
相关文章:
- Ember Data DS.Model's set函数不起作用
- 为什么我的JavaScript堆栈排序函数不起作用
- Javascript onchange()函数不起作用
- 另一个Ajax函数触发的Ajax函数不起作用
- 从PHP调用JS函数不起作用
- jQuery validate函数不起作用
- JS-窗口宽度函数不起作用
- javascript函数,该函数不起作用,但不会显示任何错误
- 为什么这个排序函数不起作用
- 为什么这个反向函数不起作用
- Javascript parseInt 函数不起作用
- 我的函数不起作用,Ajax调用,JQuery,调用外部?我不知道
- 主干构造函数不起作用
- Javascript:this.value 函数不起作用
- Mocha 的 beforeEach() 和 done() 函数不起作用
- 在jQuery中,我的函数不起作用
- jquery-ui-rails的draggable和dropable函数不起作用
- 数学函数不起作用
- Javascript-创建打印到HTML的函数不起作用
- 我上传了客户's服务器一个js函数不起作用