[英]Javascript variable not defining in function
第一次单击“仅”时,我正在编写一个小的脚本来清除搜索表单。 到目前为止,我有以下几点:
$(function() {
if(typeof firstClick == 'undefined')
{
$("#search").live("focus", function() {
$(this).val("");
var firstClick = true;
});
}
});
但是,即使使用var firstClick = true定义变量; 在函数中,脚本似乎每次都传递if语句。 我确定我缺少一些愚蠢的东西,但是我似乎无法弄清楚。
我尝试将函数外部的var firstClick定义为一个假布尔值,然后检查是否为假,但是我似乎仍然无法使变量在函数中变为真。
var firstClick = true;
您正在重新声明firstClick这里。 删除var
,然后在两个函数之外定义它。 在赋值之前添加var
告诉Javascript定义一个范围为当前函数的变量,在您的情况下,该变量是分配给焦点事件的匿名函数。 外部函数无法看到它,因为您使用var
限制了它的范围。
变量仅存在于定义它们的作用域(使用var
)和其后继作用域中。 您的typeof
调用在祖先范围内。 firstClick
在那里不存在。 您应该在外部范围中将变量定义为false
,然后在内部将其重新定义为true
。 此外,条件应该在点击处理程序中。
$(function() {
var firstClick = false;
$("#search").live("focus", function() {
if (!firstClick) {
$(this).val("");
firstClick = true; // change the value in the outside scope
}
});
});
您的firstClick
是在回调函数的本地范围内定义的,因此对父代码不可见。
var firstClick = false;
$(function() {
if(!firstClick)
{
$("#search").live("focus", function() {
$(this).val("");
firstClick = true;
});
}
});
问题是范围之一。 变量firstClick仅存在于焦点事件中。 您需要将firstClick声明为名称空间内的全局变量,如下所示:
(function($) {
var firstClick = false;
$('#search').live('focus', function() {
if (typeof firstClick === 'undefined') {
$(this).val('');
firstClick = true;
}
});
}(jQuery));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.