为什么'alert'不会根据输入值显示变量集的新值?

时间:2014-07-21 01:42:53

标签: jquery

点击提交按钮后,点击'点击'我使用' alert'显示从输入文本中分配值的变量。为什么返回空白值?然后,我尝试创建一个包含'警告'对于那个变量,我在'点击'中使用了这个功能。显示导致文本框值的事件。为什么会这样?两种操作有何不同? HTML:

<form id="myForm">Your name:
    <input type="text" id="nametxt" />
    <input type="button" value="submit" id="submit" />
</form>

jQuery :(第一次实验)

var name = "";
$("#submit").click(function(){    
    name = $("#nametxt").val();
});
    alert(name); ==============> Unexpected result: blank value

jQuery :(第二次实验)

var name = "";

var makeSentence =  function() {
    return name + " is nice!";
}

var myFunc = function() {

    alert(makeSentence());
}

$( "#submit" ).click(function() {
   name = $('#nametxt').val();
   myFunc(); ==========================> Expected result: "yourname is nice!" is alerted.
});

为什么实验2显示名称的值,但实验1不显示

演示:http://jsfiddle.net/jasperlee/2AVQf/

2 个答案:

答案 0 :(得分:2)

在您的第一个实验中,您的alert()超出了函数定义,这意味着在定义函数后立即调用它,而不是在您单击按钮时调用。根据您的实验1,这是一个working jsFiddle

另外,您可以考虑使用console.log()进行测试而不是alert()。就个人而言,我觉得它更方便。

答案 1 :(得分:1)

var name = "";
$("#submit").click(function(){    
    name = $("#nametxt").val();
});
alert(name);

在此示例中,name设置为blank.字符串。 当页面加载时,alert函数将被执行,将提醒空白值。

这是预期的行为并非出乎意料。

请注意,在此示例中,alert仅在页面加载时执行一次。

但是,与anonymous function事件相关联的submit会更新name变量。

您可以访问name

中的Javascript Console变量进行验证
var name = "";

var makeSentence =  function() {
    return name + " is nice!";
}

var myFunc = function() { 
    alert(makeSentence());
}

$( "#submit" ).click(function() {
   name = $('#nametxt').val();
   myFunc();
});

在此示例中,alert函数在调用myFun时执行。点击myFunc后会调用#submit

name变量在与anonymous function的{​​{1}}事件相关联的click被执行时设置。

#submit在此示例中点击alert的次数增加了。