有人可以向我解释我做错了什么吗?
function navMenuIntervalCheck() {
if (currentSiteUrl != "subsites/players.php" || currentSiteUrl != "subsites/itemshop.php") {
$.ajax({
url: currentSiteUrl,
cache: false,
success: function (dataForContainer) {
$('#container').html(dataForContainer);
}
});
}
screenControlCheck();
};
setInterval(function () {
navMenuIntervalCheck()
}, 5000);
当我运行我的网站时,即使currentSiteUrl==subsites/players.php
答案 0 :(得分:10)
答案 1 :(得分:3)
currentSiteUrl
只能有一个值,因此,您测试的至少一个值不会等于currentSiteUrl
,这使得if
条件始终为{{} 1}}。
我认为您打算使用true
,或者您打算&&
与==
一起使用。
答案 2 :(得分:2)
您的代码说明了这一点:
当currentSiteUrl与subsites / players.php不同或不同于subsites / itemshop.php时刷新。
所以subsites / players.php确实不同于subsites / itemshop.php
使用&&而不是||
答案 3 :(得分:2)
看看你的if语句:
if (a != foo || a != bar)
让我们看看可能性:
您的if语句始终评估为true。
正如其他人已经说过的那样,您希望将||
替换为&&
。
让我向你提出一个逻辑规则,称为DeMorgan's Law。在学习如何设置好if
语句时,这非常有用。
!(a || b) === !a && !b
也
!(a && b) === !a || !b
这说的是:“不是(一个或另一个事件)”与“不是一个事件而不是另一个事件”是相同的,而“不是(一个事件和另一个事件)”与“不是一个事件”是一回事或不是另一个“。
答案 4 :(得分:2)
我知道这已得到解答,但认为使用您自己的代码添加一些其他信息可能会有所帮助。
如上所述,将logical operator从||
切换为&&
将会有效:
if (currentSiteUrl != "subsites/players.php" && currentSiteUrl != "subsites/itemshop.php")
但为什么会这样?
使用||
||
逻辑运算符如果第一个或第二个表达式为true
则返回true
,并且仅当两者都为false
时才会返回false
。< / p>
因此:
如果currentSiteUrl != "subsites/players.php"
为true
,您最终会进入if
区块
如果currentSiteUrl != "subsites/players.php"
为false
且currentSiteUrl != "subsites/itemshop.php"
为true
,则您最终会进入if
区块
永远不会有另一种情况,因为您的变量currentSiteUrl
只能包含一个值,因此其中一个表达式始终为true
,导致您始终以{{1}结尾阻止。
使用if
另一方面,使用&&
逻辑运算符,如果第一个或第二个表达式为&&
,则返回false
,并且仅当两者都为false
时才返回true
{1}}。
因此:
如果true
为currentSiteUrl != "subsites/players.php"
且true
为currentSiteUrl != "subsites/itemshop.php"
,则您最终会进入true
区块
如果if
为currentSiteUrl != "subsites/players.php"
且true
为currentSiteUrl != "subsites/itemshop.php"
,则不会以false
结尾块
如果if
为currentSiteUrl != "subsites/players.php"
,您 <{>}
永远不会有另一个场景,因为只有当两个表达式都是false
时,你才能进入if
块,并且只要表达式为true
,你就不会。< / p>
答案 5 :(得分:0)
你是如何获得currentSiteUrl的?一个url后面是protocol :: // domain
尝试使用follwoing属性获取URL然后匹配
window.location.href
此网址还将包含http或https和域名