在JQuery中定义全局变量

Ali*_*cia 8 javascript variables jquery global-variables javascript-events

我不确定我是否正确解释这一点,但在这里......

我有一个在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>
Run Code Online (Sandbox Code Playgroud)

这是我使用的JQuery.

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

问题是,如果我稍后尝试为其他函数调用PCLevel变量,则没有任何反应.我在这里错过了什么?或者最好完全跳过JQuery并使用Javascript来做同样的事情?

Jos*_*eph 11

问题是PClevel在click处理程序中的作用域.它不能在外面访问.为了让外部的代码看到PClevel,在外面声明它并让click处理程序只是修改它.

$(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); 
    });
});
Run Code Online (Sandbox Code Playgroud)