$(document).ready(function() {
var varChange = '';
var baseVar = 50;
selectBaseVar = function(){
switch (varChange) {case 101: varChange = 501; break;
case 501: varChange = 101; break;
default: varChange = 101; break;}
console.log('internal val: '+varChange);
return varChange;
};
$("#myButton").click(function(){
selectBaseVar();
});
selectBaseVar();
console.log('external val: '+varChange);
console.log('base baseVar = '+baseVar);
baseVar += varChange; // How do I update this value upon the button click event?
console.log('updated baseVar = '+baseVar); // it works only in the document.ready state
});
适用于document.ready
州,但不适用于click
事件。范围问题可能是原因。
我不知道如何解决此问题
意图是将baseVar保持为常数@ 50
增加baseVar的值,到期
baseVar + = varChange;
切换varChange,并更新baseVar
在docuent.ready中,我们得到了:
内部:101
外部val:101
base baseVar = 50
更新了baseVar = 151
如果我点击,我分别得到了预期的内部值:
内部val:501
内部val:101
但是(更新后的baseVar = 151)无论它切换到什么值
而不是我要做的事情,那就是影响外部变量 baseVar 的值为:
更新了baseVar = 151
更新了baseVar = 551
注意:为了其他有益的功能,有充分的理由将 baseVar 变量排除在 selectBaseVar()的范围之外从切换结果相同,但已超出 selectBaseVar()的范围。
感谢
答案 0 :(得分:1)
答案 1 :(得分:1)
你想要达到的目的似乎是:
$(document).ready(function() {
var varChange, baseVar = 50;
selectBaseVar = function(){
varChange = (varChange == 101) ? 501 : 101;
console.log('internal val: '+varChange);
return varChange;
};
$("#myButton").click(function(){
selectBaseVar();
baseVar += varChange;
console.log('button handler val: ' + varChange);
});
selectBaseVar();
console.log('external val: ' + varChange);
console.log('base baseVar = ' + baseVar);
baseVar += varChange; // How do I update this value upon the button click event?
console.log('updated baseVar = ' + baseVar); // it works only in the document.ready state
});