Javascript 如何使用单击和切换更新变量值
适用于Javascript 如何使用单击和切换更新变量值,javascript,jquery,Javascript,Jquery,适用于文档。就绪状态,但不适用于单击事件。范围问题可能是原因 我不知道如何解决这个问题 目的是将baseVar保持为常数@50 增加baseVar的值,因为 baseVar+=varChange; 切换varChange,并更新baseVar 在document.ready状态下,我们得到: 内部值:101 外部值:101 基准baseVar=50 更新后的baseVar=151 如果我单击,我分别得到了预期的内部值: 内部val:501 内部值:101 但是(更新后的baseVar=151)无
文档。就绪
状态,但不适用于单击
事件。范围问题可能是原因
我不知道如何解决这个问题
目的是将baseVar保持为常数@50
增加baseVar的值,因为
baseVar+=varChange;
切换varChange,并更新baseVar
在document.ready状态下,我们得到:
内部值:101
外部值:101
基准baseVar=50
更新后的baseVar=151
如果我单击,我分别得到了预期的内部值:
内部val:501
内部值:101
但是(更新后的baseVar=151)无论它切换的是什么值
而不是我在做什么,这影响了外部变量baseVar,其值为:
更新后的baseVar=151
更新后的baseVar=551
注意:有很好的理由将baseVar变量保留在selectBaseVar()的范围之外,以使其他函数受益于相同的切换结果,但不在selectBaseVar()的范围之内
谢谢这似乎对我有用: 确保您正在包装代码
$(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(function() {
});
这个代码在哪里?这是您的
$(文档).ready
处理程序的正文吗?
$(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
});