函数中未定义Javascript变量
我正在写一个小脚本来清除我的搜索表单,当它们第一次被“只”点击时。到目前为止,我的情况如下:函数中未定义Javascript变量,javascript,jquery,Javascript,Jquery,我正在写一个小脚本来清除我的搜索表单,当它们第一次被“只”点击时。到目前为止,我的情况如下: $(function() { if(typeof firstClick == 'undefined') { $("#search").live("focus", function() { $(this).val(""); var firstClick = true; }); } }); 但是,即使使用var firstClick=true定义变量
$(function() {
if(typeof firstClick == 'undefined')
{
$("#search").live("focus", function() {
$(this).val("");
var firstClick = true;
});
}
});
但是,即使使用var firstClick=true定义变量;在函数中,脚本似乎每次都传递if语句。我肯定我错过了一些愚蠢的事情,但我似乎无法理解
我已经尝试将函数外部的var firstClick定义为false boolean,然后检查它是否为false,但我似乎仍然无法使变量在函数中变为true。
var firstClick=true代码>
您正在重新声明First单击此处。删除var
,并在两个函数之外定义它。在赋值之前添加var
告诉Javascript将变量的作用域设置为当前函数,在您的例子中,该函数是分配给焦点事件的匿名函数。外部函数无法看到它,因为您使用var
var firstClick=true限制了它的范围代码>
您正在重新声明First单击此处。删除var
,并在两个函数之外定义它。在赋值之前添加var
告诉Javascript将变量的作用域设置为当前函数,在您的例子中,该函数是分配给焦点事件的匿名函数。外部函数无法看到它,因为您使用var
限制了它的范围变量仅存在于定义它们的范围内(使用var
)和子范围内。您的typeof
调用位于祖先作用域中<代码>首次单击
不存在。您应该在外部范围中将变量定义为false
,然后在内部将其重新定义为true
。此外,条件应该在click处理程序中
$(function() {
var firstClick = false;
$("#search").live("focus", function() {
if (!firstClick) {
$(this).val("");
firstClick = true; // change the value in the outside scope
}
});
});
变量仅存在于定义它们的范围内(使用var
)和子范围内。您的typeof
调用位于祖先作用域中<代码>首次单击
不存在。您应该在外部范围中将变量定义为false
,然后在内部将其重新定义为true
。此外,条件应该在click处理程序中
$(function() {
var firstClick = false;
$("#search").live("focus", function() {
if (!firstClick) {
$(this).val("");
firstClick = true; // change the value in the outside scope
}
});
});
您的
firstClick
var是在回调函数的本地范围内定义的,因此父代码不可见
var firstClick = false;
$(function() {
if(!firstClick)
{
$("#search").live("focus", function() {
$(this).val("");
firstClick = true;
});
}
});
您的
firstClick
var是在回调函数的本地范围内定义的,因此父代码不可见
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));
问题在于范围。变量firstClick仅存在于焦点事件中。您需要在名称空间中将firstClick声明为全局,如下所示:
(function($) {
var firstClick = false;
$('#search').live('focus', function() {
if (typeof firstClick === 'undefined') {
$(this).val('');
firstClick = true;
}
});
}(jQuery));
我看不出这个if块会被多次求值,我看不出这个if块会被多次求值