Javascript 使用keyup()设置变量

Javascript 使用keyup()设置变量,javascript,jquery,Javascript,Jquery,我试图用keyup方法在输入字段中获取一个信用卡号码,但是当我在控制台中键入变量名时,我变得未定义。然而,当我在字段中键入数字时,这些数字会被记录到控制台中 $('#authorizenet_cc_number').keyup(function(){ var ccNum = $('#authorizenet_cc_number').val(); console.log(ccNum); }); 我的理解是错误的,当输入中的值更改时,它存储在cc

我试图用keyup方法在输入字段中获取一个信用卡号码,但是当我在控制台中键入变量名时,我变得未定义。然而,当我在字段中键入数字时,这些数字会被记录到控制台中

$('#authorizenet_cc_number').keyup(function(){
        var ccNum =  $('#authorizenet_cc_number').val();
        console.log(ccNum);       
  });

我的理解是错误的,当输入中的值更改时,它存储在ccNum变量中?

ccNum是函数的局部变量,因此除非在函数中插入断点,否则它将是未定义的

您还可以添加调试器,这将导致中断发生。然后可以使用控制台查看ccNum的值

$('#authorizenet_cc_number').keyup(function(){
        var ccNum =  $('#authorizenet_cc_number').val();
        console.log(ccNum);  
        debugger;     
  });

ccNum是函数的局部变量,因此除非在函数中插入断点,否则它将是未定义的

您还可以添加调试器,这将导致中断发生。然后可以使用控制台查看ccNum的值

$('#authorizenet_cc_number').keyup(function(){
        var ccNum =  $('#authorizenet_cc_number').val();
        console.log(ccNum);  
        debugger;     
  });
ccNum的作用域是keyup处理程序匿名函数的本地作用域。如果您希望从更高的范围访问它,请将其放在更高的范围中

var ccNum; // declaration in an outer scope

$('#authorizenet_cc_number').keyup(function(){
    // no need to reselect on the input, just use "this"
    ccNum = $(this).val(); // initialization in an inner scope
    console.log(ccNum); // logs the value
});

console.log(ccNum); // also logs the value (if called after the handler has fired)
ccNum的作用域是keyup处理程序匿名函数的本地作用域。如果您希望从更高的范围访问它,请将其放在更高的范围中

var ccNum; // declaration in an outer scope

$('#authorizenet_cc_number').keyup(function(){
    // no need to reselect on the input, just use "this"
    ccNum = $(this).val(); // initialization in an inner scope
    console.log(ccNum); // logs the value
});

console.log(ccNum); // also logs the value (if called after the handler has fired)

页面加载时是否存在此元素?而且不用再次声明该变量,只需使用$this.val;因为变量的作用域仅限于keyup函数处理程序。页面加载时是否存在此元素?而且不用再次声明该变量,只需使用$this.val;因为变量的作用域仅限于keyup函数处理程序。如果我将ccNum放在keyup函数之外,我仍然无法定义。如何使其成为全局变量?请遵循jbabeys步骤,如果声明为全局变量,请确保更改var ccNum=。。to ccNum=作为关键字var将创建一个新的局部变量。如果我将ccNum放在keyup函数之外,我仍然没有定义。如何使其成为全局变量?请遵循jbabeys步骤,如果声明为全局变量,请确保更改var ccNum=。。to ccNum=作为关键字var将创建一个新的局部变量。按照您的示例,我仍然得到ReferenceError:在控制台中键入ccNum时,没有定义ccNum。首先,感谢您的耐心和帮助。所以我得到了console.log,没有问题。但是,如果我在chrome中打开inspector,点击escape并键入ccNum;我的理解是,它会给我变量的值。不是这样吗?@ScottS我猜您正在查找jsfiddle,在这种情况下,检查器的上下文可能不是jsfiddle运行它的代码所在的iframe。因此,当我在magento之外的测试文件中执行此操作时,它可以正常工作。显然,magento正在做一些导致奇怪结果的事情。再次感谢您的帮助。按照您的示例,我仍然得到ReferenceError:在控制台中键入ccNum时未定义ccNum。首先,感谢您的耐心和帮助。所以我得到了console.log,没有问题。但是,如果我在chrome中打开inspector,点击escape并键入ccNum;我的理解是,它会给我变量的值。不是这样吗?@ScottS我猜您正在查找jsfiddle,在这种情况下,检查器的上下文可能不是jsfiddle运行它的代码所在的iframe。因此,当我在magento之外的测试文件中执行此操作时,它可以正常工作。显然,magento正在做一些导致奇怪结果的事情。再次感谢你的帮助。