Javascript 在click jquery事件中找不到变量

Javascript 在click jquery事件中找不到变量,javascript,jquery,events,variables,click,Javascript,Jquery,Events,Variables,Click,我有一些单选按钮的列表,我在单击时获取选中输入的值,将其存储在变量中,然后我希望在单击另一个元素(例如div)时访问该变量。除了在第二次单击事件中无法识别变量外,其他一切都正常工作。可能是变量范围错误 <ul><li><a href="#">Line</a><input class="checkTool" type="radio" name="drawTool" value="line"></input><

我有一些单选按钮的列表,我在单击时获取选中输入的值,将其存储在变量中,然后我希望在单击另一个元素(例如div)时访问该变量。除了在第二次单击事件中无法识别变量外,其他一切都正常工作。可能是变量范围错误

   <ul><li><a href="#">Line</a><input class="checkTool" type="radio" name="drawTool"     value="line"></input></li></ul>
            <ul><li><a href="#">Rect</a><input class="checkTool" type="radio" name="drawTool" value="rectangle"></input></li></ul>
            <ul><li><a href="#">Circ</a><input class="checkTool" type="radio" name="drawTool" value="circle"></input></li></ul>

如果要在其他方法中访问,请将该值保留在方法外部声明的变量中。因此,它比该方法具有更广泛的适用范围。它也可以在方法之外访问

$(function(){

   var currTool="";
   $("input:radio[name=drawTool]").click(function() {
      currTool= $(this).val();
   });

   $('.space').click(function(){
      $(this).html(currTool)
   })

});

如果要在其他方法中访问,请将该值保留在方法外部声明的变量中。因此,它比该方法具有更广泛的适用范围。它也可以在方法之外访问

$(function(){

   var currTool="";
   $("input:radio[name=drawTool]").click(function() {
      currTool= $(this).val();
   });

   $('.space').click(function(){
      $(this).html(currTool)
   })

});

更好的是:您可以在实际需要时通过查找选中的单选按钮来检索当前选定的工具

$('.space').click(function(){
    var currTool = $("input:radio[name=drawTool]:checked").val();
    $(this).html(currTool);
});

更好的是:您可以在实际需要时通过查找选中的单选按钮来检索当前选定的工具

$('.space').click(function(){
    var currTool = $("input:radio[name=drawTool]:checked").val();
    $(this).html(currTool);
});

为什么你不知道什么是变量作用域以及变量是如何使用的?@Karoly Horvath对不起,我的意思是键入变量。实际上我是在小提琴上做的,这只是我问题中的一个输入错误,为什么你不知道什么是变量作用域以及变量是如何使用的?@Karoly Horvath对不起,我的意思是键入变量。实际上我是在小提琴上做的,这只是我问题中的一个输入错误,它不是一个全局变量,它是在(外部)匿名函数的范围内声明的。(这实际上比全局函数更好,因为它是内部函数可以访问的最近的作用域。)@nnnnnn:Ah!仍然,不需要使用变量跟踪当前工具。在任何给定的时间点,您都可以使用
:checked
伪选择器检索当前选中的项,如下面我的回答所示。相反,您试图通过手动记录检查状态更改来重新发明轮子,甚至没有涵盖所有情况:您没有考虑使用箭头键、制表符和/或空格键的键盘输入或其他导航网页的方式,如屏幕阅读器。这不是一个全局变量,而是在(外部)范围内声明的匿名函数。(这实际上比全局函数更好,因为它是内部函数可以访问的最近的作用域。)@nnnnnn:Ah!仍然,不需要使用变量跟踪当前工具。在任何给定的时间点,您都可以使用
:checked
伪选择器检索当前选中的项,如下面我的回答所示。相反,您试图通过手动记录检查状态更改来重新发明轮子,甚至没有涵盖所有情况:您没有考虑使用箭头键、制表符和/或空格键或其他导航网页的方式(如屏幕阅读器)的键盘输入,因为单击不是唯一可以更改输入状态的操作。注意:这要好得多,因为单击不是唯一可以更改输入状态的操作。