我陷入了一个简单的else if
状态,并且相信这是我第一次遇到这个问题。也许我做错了什么,我不知道。
$('#lblShowCounter').each(function () {
if ($(this).text() >= '250') {
alert('red');
} else if ($(this).text() >= '300') {
alert('blink');
} else {
alert('nothing');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span id="lblShowCounter">800</span>
问题是这段代码只会先执行if
而不是else if
看起来好像不会检查元素文本两次,对吧?但是当我使用它时它工作正常:
$('#lblShowCounter').each(function () {
if ($(this).text() >= '250') {
alert('red');
}
});
$('#lblShowCounter').each(function () {
if ($(this).text() >= '300') {
alert('blink');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span id="lblShowCounter">800</span>
请注意,我需要两个警报,因为800大于300且大于250。
答案 0 :(得分:3)
您的if / else语句顺序错误。它应该是:
$('#lblShowCounter').each(function () {
if ($(this).text() >= '300') {
alert('black');
} else if ($(this).text() >= '250') {
alert('blink');
} else {
alert('nothing');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span id="lblShowCounter">800</span>
300大于250,因此第二个语句将永远不会执行,因为对于大于250的所有值(包括大于300),第一个语句为真。
如果要执行两个语句,则不应使用else if
,因为如果第一个语句为true,则会停止执行。而是使用两个if
子句,例如:
$('#lblShowCounter').each(function () {
if ($(this).text() >= '300') {
alert('black');
}
if ($(this).text() >= '250') {
alert('blink');
}
});
答案 1 :(得分:1)
更改订单,因为300大于250
$('#lblShowCounter').each(function () {
if ($(this).text() >= '300') {
alert('blink');
} else if ($(this).text() >= '250') {
alert('red');
} else {
alert('nothing');
}
});
答案 2 :(得分:0)
遵循代码的逻辑,没有条件你可以点击第二个if语句。你必须改变这样的顺序:
$('#lblShowCounter').each(function () {
if ($(this).text() >= '300') {
alert('blink');
} else if ($(this).text() >= '250') {
alert('red');
} else {
alert('nothing');
}
});
答案 3 :(得分:0)
由于此问题已更新,表明您需要2个提醒。
使用if/elseif
块,一旦达到第一场比赛,该块就会完成。因此,在代码中,一旦匹配250
,if语句就会完成,elseif
永远不会被评估。
要获得独立执行的多个条件,它们应该是多个if语句:
$('#lblShowCounter').each(function () {
var text = $(this).text(),
matched;
if (text >= '300') {
alert('blink');
matched = true;
}
if (text >= '250') {
alert('red');
matched = true;
}
if (!matched) {
alert('nothing');
}
});
答案 4 :(得分:0)
使用&&
尝试此操作,我的意思是限制持续时间:
$('#lblShowCounter').each(function () {
if ($(this).text() >= '250' && $(this).text() < '300') {
alert('red');
} else if ($(this).text() >= '300') {
alert('blink');
} else {
alert('nothing');
}
});