否则if语句未在jQuery中注册

时间:2012-02-03 22:46:51

标签: javascript jquery if-statement

我遇到了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');
    }
}

3 个答案:

答案 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');
 }