【发布时间】:2015-10-18 00:56:15
【问题描述】:
显然我在变量范围上仍然很不稳定。 btn2 有没有办法获取由单选按钮更新的numHints 的 3 或 1 值? (目前返回undefined)。
HTML:
<input id="btn" type="button" value="btn">
<br>
<form id="Difficulty">
<input checked="checked" type="radio" name="difficulty" id="easier">Easier
<br>
<input type="radio" name="difficulty" id="harder">Harder</form>
</div>
<br/>
<input id="btn2" type="button" value="btn2">
JS:
var numHints;
$('#btn').on('click', function () {
var difficulty = $('input[name="difficulty"]:checked', '#Difficulty').attr('id');
if (difficulty == "easier") {
numHints = 3;
} else {
numHints = 1;
}
console.log(numHints);
return numHints; // doesn't work
});
$('#btn2').on('click', function () {
console.log(numHints); // undefined, need numHints available in here
});
【问题讨论】:
-
return行在您的代码中毫无意义。你认为它在做什么? -
因为您要关闭该 numHints 变量,所以定义这两个点击处理程序的位置很重要。由于代码是在问题中编写的(以及 nikhil 的小提琴),因此 numHints 在两个点击处理功能的范围内。在您的实际代码库中是这样吗?
-
我不明白你的逻辑。为什么你期望点击
#btn2来检查收音机的相关值(你设置了一个变量但是......)?您的代码中没有任何内容反映此逻辑,您的return语句没有意义。这不是您要寻找的东西吗:jsfiddle.net/y2y11rmt/2 -
我简化(更改)我的代码以解决变量范围问题,但我过度简化了它。我现在意识到这是一个变量提升问题。我的代码试图在设置任何值之前获取 numHints。是的,回报没有意义。 (问题基本解决)
标签: javascript jquery scope undefined