我遇到了jQuery中'if else if'函数的问题。根本没有检测到我的代码的最后两个语句,所以当我希望加载页面时没有任何反应。有人知道这有什么问题吗?
function pageloader() {
var position = $('#slideInner').css('marginLeft');
if (position >= '-936px') {
// load the page contents
$('#blogs').load('pagetwo.html #blog');
// hide the loading box
loadoff();
$('#portfolio').empty();
}
else if (position = '-1872px') {
$('#portfolio').load('pagethree.html #homepage');
loadoff();
$('#blogs').empty();
}
else if (position = '-2808px') {
$('#contact').load('pagefour.html #homepage');
// hide the loading box
loadoff();
}
else {
alert('all posibilities exausted');
}
}
答案 0 :(得分:5)
if
条件错误。
在这两行中将=
替换为==
if ( position == '-1872px')
if ( position == '-2808px')
如果是罚款,否则为FYI
if(postion = 'anything') //will always pass the if clause
答案 1 :(得分:0)
应使用运算符>
或<
来比较数字而非字符串。此外,在进行比较时,使用==
而不是=
这是赋值运算符,并且几乎总是计算为true。在您的情况下,您需要先将位置转换为数字:
// position is now a Number
var position = parseInt($('#slideInner').css('marginLeft'));
if ( position >= -936) {
// do something
} else if ( position == -1872) {
// do something
}else if ( position == -2808){
// do something
} else {
// do something else
}
答案 2 :(得分:0)
首先,正如Shankar指出的那样,你需要“等价”运算符(==)。单个(=)分配给变量,该变量总是计算为真。
我还要重写,因为你要检查的条件是为了使它更具可读性。像这样:
function pageloader()
{
var position = $('#slideInner').css('marginLeft');
if (position >= '-936px')
{
// load the page contents
$('#blogs').load('pagetwo.html #blog');
// hide the loading box
loadoff();
$('#portfolio').empty();
return;
}
if (position == '-1872px')
{
$('#portfolio').load('pagethree.html #homepage');
loadoff();
$('#blogs').empty();
return;
}
if (position == '-2808px')
{
$('#contact').load('pagefour.html #homepage');
// hide the loading box
loadoff();
return;
}
alert('all posibilities exausted');
}