【问题标题】:javascript - return variable value to use in another functionjavascript - 返回变量值以在另一个函数中使用
【发布时间】:2015-10-18 00:56:15
【问题描述】:

显然我在变量范围上仍然很不稳定。 btn2 有没有办法获取由单选按钮更新的numHints 的 3 或 1 值? (目前返回undefined)。

jsfiddle

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


【解决方案1】:

只有先点击#btn才会起作用,否则变量是未定义的。 你可以用一个值来初始化它:

var numHints = 3;

另外,你的return 没有意义

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2015-05-16
    • 1970-01-01
    • 2013-10-27
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多