缩短if,否则if,否则if ... else使用循环

时间:2014-10-31 21:52:23

标签: javascript jquery loops if-statement

我有以下几行代码:

$(function(){
$("div").scroll(function() {
    function hpos(id) {
        var pos = $("#" + id).position();
        return pos.top;
    }
    function final(id) {
        $("#header").html($("#" + id).html()),
        $("h1").css("visibility","visible"),
        $("#" + id).css("visibility","hidden");
    }
    if (hpos(5) < 0) {
        final(5);
    }
    else if (hpos(4) < 0) {
        final(4);
    }
    else if (hpos(3) < 0) {
        final(3);
    }
    else if (hpos(2) < 0) {
        final(2);
    }
    else {
        final(1);
    }
});

});

我不能通过使用循环而不是else if语句来缩短它吗?我无法找到一种方法来使循环适用于我的位置()。

4 个答案:

答案 0 :(得分:5)

for (var i = 5; i > 0; i--){
    if (hpos(i) < 0) {
        final(i);
        break;
    }
}

会是这样的吗?没有按照方式进行测试

答案 1 :(得分:0)

使用case方法执行大量其他if语句的更简单方法。

答案 2 :(得分:0)

这应该更短:

$.each([5,4,3,2], function(i,v) {
    if( hpos(v) < 0 ) {
        final(v);
        return false;
    } else if( v === 2 ) {
        final(1);
    }
});

答案 3 :(得分:0)

如果您需要一段时间版本: :)

var elemId = 5;
while (elemId > 1) {
  if (hpos(elemId) < 0) {
    break;
  }
  elemId--;
}
final(elemId);