Если убирать или синтаксис в JavaScript


Скрипка: http://jsfiddle.net/fhBd5/

Так что выше работает, но у меня возникли проблемы, пытаясь придумать чистый и лаконичный способ сделать какой-то типа петли на Если или заявления.

Любая помощь очень высоко ценится!

var checkPositionOnLoad = function (e) {
        var currentPos = 0;
        var listItem = document.getElement('li.current');
        var currentSelected = $('list').getChildren('li').indexOf(listItem) + 1;

        if (currentSelected <= 3) {
            return false;
        }
        if(currentSelected==4||currentSelected==5||currentSelected==6){
            currentPos = -300 * 1;
            $('list').setStyle('left', currentPos);      
        }
        else if(currentSelected== 7||currentSelected==8||currentSelected==9){
            currentPos = -300 * 2;
            $('list').setStyle('left', currentPos);      
        }
        else if(currentSelected==10||currentSelected==11||currentSelected==12){
            currentPos = -300 * 3;
            $('list').setStyle('left', currentPos);      
        }
        else if(currentSelected==13||currentSelected==14||currentSelected==15){
            currentPos = -300 * 4;
            $('list').setStyle('left', currentPos);       
        };

    };


261
1
задан 22 ноября 2011 в 04:11 Источник Поделиться
Комментарии
1 ответ

Вот мой слегка "математическая" версия функции, которую вы выложили:

var checkPositionOnLoad = function (e) {
var currentPos = 0;
var listItem = document.getElement('li.current');
var currentSelected = $('list').getChildren('li').indexOf(listItem) + 1;

currentPos = -300 * (Math.floor((currentSelected + 2) / 3) - 1);

$('list').setStyle('left', currentPos);
};

Я попытаюсь объяснить, как я попал в сжатом варианте.

Я удалил дублирование и написал функцию следующим образом:

var checkPositionOnLoad = function (e) {
var currentPos = 0;
var listItem = document.getElement('li.current');
var currentSelected = $('list').getChildren('li').indexOf(listItem) + 1;

if (currentSelected <= 3) {
currentPos = -300 * 0;
}
if (currentSelected == 4 || currentSelected == 5 || currentSelected == 6) {
currentPos = -300 * 1;
}
else if (currentSelected == 7 || currentSelected == 8 || currentSelected == 9) {
currentPos = -300 * 2;
}
else if (currentSelected == 10 || currentSelected == 11 || currentSelected == 12) {
currentPos = -300 * 3;
}
else if (currentSelected == 13 || currentSelected == 14 || currentSelected == 15) {
currentPos = -300 * 4;
};

$('list').setStyle('left', currentPos);
};

Тогда я понял, что вы хотите, чтобы выяснить, где на данный выбранный элемент выпадает (в какой группе тройняшек, что является {1, 2, 3} {4, 5, 6}, и т. д..). Я играл вокруг и придумал математическую формулу:

Math.floor((i + 2) / 3) 

Это в основном говорит вам, что для i = 7, выбранный элемент попадает в третью группу {7, 8, 9} , который является третьим после триплета {1, 2, 3} и {4, 5, 6}

И левый свойство может быть задано с помощью:

var currentPos = -300 * (Math.floor((i + 2) / 3) - 1); // (-1 to make it zero-based index)

И это все.

1
ответ дан 22 ноября 2011 в 06:11 Источник Поделиться