如果变量=数字,做X,否则啥都不做

Posted

技术标签:

【中文标题】如果变量=数字,做X,否则啥都不做【英文标题】:If variable = number, do X, else do nothing如果变量=数字,做X,否则什么都不做 【发布时间】:2012-02-15 21:40:33 【问题描述】:

我编写了一个 jquery 代码,它将在悬停时扩展某些元素。我希望代码仅在未扩展时才扩展。这是我的代码。它似乎无法正常工作。

$(document).ready(function() 
    var labelstatus = 0;
);
$(document).ready(function() 
    $("a.rm").hover(function () 
        if (labelstatus != 1)
            $("#expensereduction,#envimpact,#mtextlft,#initaud,#energaud").fadeOut();
            var currentFontSize = $('.initiate').css('font-size');
            var currentFontSizeNum = parseFloat(currentFontSize, 10);
            var newFontSize = currentFontSizeNum*3;
            $('.initiate').delay(500).animate(
                fontSize: newFontSize
            );
            return false;
            var labelstatus = 1;
        
        else 
        
    );
);

【问题讨论】:

“无法正常工作”是什么意思?它在做什么不正确? 为什么是两个 $(document).ready(function() ? 【参考方案1】:

这...

    return false;
    var labelstatus = 1;

应该是……

    labelstatus = 1;
    return false;

...还有这个...

$(document).ready(function() 
    var labelstatus = 0;
);

应该是……

var labelstatus = 0;

return 语句之后的代码将不会运行

使用var 使labelstatus 成为函数的局部变量

你真的不需要两个$(document).ready(function() 调用。将您的代码合二为一,您可以将 labelstatus 设置为该处理程序的本地,以便内部的所有代码都可以使用它。

【讨论】:

【参考方案2】:

您在函数内部声明局部变量,因此它们彼此独立。此外,您每次都会获得一个新变量,因此之前的值不会持续存在。

另外,您在分配变量之前调用return,这将退出函数,因此永远不会发生分配。

您需要在函数之外的范围内声明变量:

$(document).ready(function() 

  var labelstatus = 0;

  $("a.rm").hover(function () 
    if (labelstatus != 1)
      $("#expensereduction,#envimpact,#mtextlft,#initaud,#energaud").fadeOut();
        var currentFontSize = $('.initiate').css('font-size');
        var currentFontSizeNum = parseFloat(currentFontSize);
        var newFontSize = currentFontSizeNum * 3;
        $('.initiate').delay(500).animate(
            fontSize: newFontSize
        );
        labelstatus = 1;
        return false;
    
    else 
    
  );

);

另外:parseFloat 函数没有基数参数。

【讨论】:

太棒了。感谢您的解释。不知道 var 只定义了局部变量。谢谢! @dylfreak6494:var 关键字用于声明所有变量。如果在函数内部使用,它将声明一个局部变量,如果在全局范围内使用,它将创建一个全局变量。如果你使用一个变量而不声明它,它将在全局范围内隐式声明。【参考方案3】:

labelstatus 不会设置为 1,因为该函数已在之前的行中返回。

【讨论】:

以上是关于如果变量=数字,做X,否则啥都不做的主要内容,如果未能解决你的问题,请参考以下文章

为啥#后跟一个数字似乎在C plus plus中啥都不做

R:如何在向量上使用类似“if”的函数但没有“ifelse”,因为如果没有,它应该啥都不做

shell脚本的变量赋值

JQuery 表单验证啥都不做

Process.Start() 啥都不做

python中合适的“啥都不做” lambda表达式?