在 JQuery 中定义全局变量

新手上路,请多包涵

我不确定我的解释是否正确,但事情就是这样……

我有一个在 JQuery 中工作的函数,用于将选定的下拉值分配给变量,然后在单击确认按钮时将变量传递给 HTML 的不同部分。

这是 HTML 的精简版

<p id="t1"></p>
<select id="selectLevel">
   <option value="1">1</option>
   <option value="2">2</option>
   <option value="3">3</option>
   <option value="4">4</option>
   <option value="5">5</option>
   <option value="6">6</option>
   <option value="7">7</option>
   <option value="8">8</option>
   <option value="9">9</option>
   <option value="10">10</option>
   <option value="11">11</option>
   <option value="12">12</option>
   <option value="13">13</option>
   <option value="14">14</option>
   <option value="15">15</option>
   <option value="16">16</option>
   <option value="17">17</option>
   <option value="18">18</option>
   <option value="19">19</option>
   <option value="20">20</option>
</select>
<span class="btn" id="confirmLevel">Confirm</span>

这是我使用的 JQuery。

 $(document).ready(function() {
    $('#confirmLevel').click(function() {
        var PClevel = $("#selectLevel option:selected").text();
        $('#t1').append('Level ' + PClevel);
    });
});

问题是,如果我稍后尝试为其他函数调用 PCLevel 变量,则什么也不会发生。我在这里错过了什么?或者完全跳过 JQuery 而只使用 Javascript 来做同样的事情会更好吗?

原文由 Alicia 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

问题是 PClevel 在点击处理程序内。外部无法访问。为了让外部代码看到 PClevel ,在外部声明它并让点击处理程序修改它。

 $(document).ready(function() {
    var PClevel; // Code inside the ready handler can see it.

    $('#confirmLevel').click(function() {
        PClevel = $("#selectLevel option:selected").text();
        $('#t1').append('Level ' + PClevel);
    });
});

// or

var PClevel; // Now it's a global. Everyone can see it.
$(document).ready(function() {
    $('#confirmLevel').click(function() {
        PClevel = $("#selectLevel option:selected").text();
        $('#t1').append('Level ' + PClevel);
    });
});

原文由 Joseph 发布,翻译遵循 CC BY-SA 3.0 许可协议

只需在全局范围内声明变量。

 var PClevel = '';
$(document).ready(function() {
    $('#confirmLevel').click(function() {
        PClevel = $("#selectLevel option:selected").text();
        $('#t1').append('Level ' + PClevel);
    });
});

阅读 javascript 范围是值得的,因为无论您是否使用 jQuery,它们都是相关的。

http://www.sitepoint.com/demystifying-javascript-variable-scope-hoisting/

原文由 DGS 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏