Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数中未定义Javascript变量_Javascript_Jquery - Fatal编程技术网

函数中未定义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块会被多次求值