jQuery函数不会改变常量javascript函数的全局变量

时间:2014-07-21 05:30:21

标签: javascript jquery

这段代码是否有原因:

var verb = "";

    function printPage (input) {
            $("div").append(input + "<br>");
    }

    $( "#submit" ).click(function() {
       verb = $('#enter').val();
       printPage(verb);
    });

    printPage(verb);

只导致#enter(表单)的值在click事件中记录一次(当最后一个printPage打印原始的空字符串时),而此代码:

var verb = "";

function printPage (input) {
        $("div").append(input + "<br>");
}

function buttonClick() {
  verb = "verb!";
  printPage(verb);
}

buttonClick();
printPage(verb);

打印动词两次,因为该函数已成功更改动词变量值?对不起,如果我还没有充分解释我的问题,我会在需要时详细说明。

3 个答案:

答案 0 :(得分:1)

输入值可能为空,因此您可能会看到不变,您可以这样使用:

verb = $('#enter').val() || 'verb';

答案 1 :(得分:0)

jQuery与否,如果你的方法运行,它会改变变量,如果$('#enter')的值不是空白(否则你不会看到变化)。

要对此进行测试,请在console.log( verb );之前和之后放置verb = $('#enter').val();。您将看到未调用onClick方法,或者甚至没有值。

var verb = "";

function printPage (input) {
        $("div").append(input + "<br>");
}

$( "#submit" ).click(function() {
   console.log( verb );
   verb = $('#enter').val();
   console.log( verb );
   printPage(verb);
   console.log( verb );
});

printPage(verb);

我的猜测是你没有使用正确的选择器(而不是#enter,你应该使用不同的id / class选择器)或者该值实际上是空的。

编辑:如果您想知道console.log正在做什么,它会将其写入您的浏览器控制台(如果您已经知道这一点,请道歉)。应该打开它,看看我们正在打印的调试日志。

如果你想这样做,你也可以提醒(动词)。

答案 2 :(得分:0)

您的buttonClick功能在printPage功能之前运行 - 这使得verb变量保持动词!&#39;。在printPage var具有&#39;动词后,verb函数运行两次!&#39;它的价值。

对于jQuery,printPage函数立即运行,而verb为空。只有当您点击按钮时,verb才有值。