如果变量=数字,做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,否则啥都不做的主要内容,如果未能解决你的问题,请参考以下文章