Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Нумерация в обратном порядке (https://javascript.ru/forum/misc/61811-numeraciya-v-obratnom-poryadke.html)

kovalenko3331 10.03.2016 08:12

Нумерация в обратном порядке
 
Уважаемые форумчане, помогите переделать скрипт.
Есть скрипт плейлиста
var pos = 0;
var poz = 0;
var sea = null;
var width = 530;
var vk = new Object();
(vk = {
    init: function () {
    document.write("<div id=\"player-vk-write\" align=\"center\"><div style=\"display:none\"><ul id=\"player-vk-season\"><li id=\"seasons\"></li></ul></div><div id=\"player-vk-player\"></div><ul id=\"player-vk-serial\"></ul><div style=\"display:none\"><a href=\"javascript://\" class=\"prev\" onclick=\"vk.move(1);\">prev</a><a href=\"javascript://\" class=\"next\" onclick=\"vk.move(0);\">next</a></div><a href=\"javascript://\" class=\"prev1\" onclick=\"vk.move1(1);\">prev</a><a href=\"javascript://\" class=\"next1\" onclick=\"vk.move1(0);\">next</a><\/div>")
    },
    player: function (a, b) {
        document.getElementById("player-vk-player").innerHTML = "";
        var d = document.createElement("iframe");
        d.src = String(a);
        d.width = "100%";
        d.height = "372";
        d.setAttribute("border", "0");
        d.setAttribute("frameborder", "0");
        d.setAttribute("scrolling", "no");
        d.setAttribute("allowfullscreen", "");
        d.setAttribute("webkitallowfullscreen", "");
        d.setAttribute("mozallowfullscreen", "");
        d.setAttribute("oallowfullscreen", "");
        d.setAttribute("msallowfullscreen", "");
        document.getElementById("player-vk-player").appendChild(d);
        if (document.getElementById("player-vk-serial")) {
            c = document.getElementById("player-vk-serial").getElementsByTagName("span");
            for (var i = 0; i < c.length; i++) {
                c[i].removeAttribute("class")
            }
        }
        b.setAttribute("class", "active")
    },
    season: function (a, b) {
        if (document.getElementById("player-vk-season")) {
            c = document.getElementById("player-vk-season").getElementsByTagName("span");
            for (var i = 0; i < c.length; i++) {
                document.getElementById("season" + i).style.display = "none";
                c[i].removeAttribute("class")
            }
            document.getElementById("season" + a).style.display = "";
            sea = a
        }
        b.setAttribute("class", "active")
    },
    show: function (a, b) {
        for (var i = 0; i < a; i++) {
            document.getElementById("player-vk-season").getElementsByTagName("li")[0].innerHTML += "<span onclick=\"vk.season(" + i + ", this)\">Сезон " + (i + 1) + "</span>";
            document.getElementById("player-vk-serial").innerHTML += "<li id=\"season" + i + "\" style=\"display:none;\"></li>"
        }
        for (var i = 0; i < a; i++) {
            for (var j = 0; j < b[i].length; j++) {
                document.getElementById("season" + i).innerHTML += "<span onclick=\"vk.player('" + b[i][j] + "', this);\">" + (j + 1) + " серия</span>"
            }
        }
        document.getElementById("player-vk-season").getElementsByTagName("span")[0].setAttribute("class", "active");
        document.getElementById("player-vk-season").getElementsByTagName("span")[0].click();
        document.getElementById("season0").getElementsByTagName("span")[0].click();
        document.getElementById("season0").style.display = ""
    },
    move: function (d) {
        var a, b;
        var c = document.getElementById("seasons");
        var e = c.offsetWidth;
        var f = c.offsetLeft;
        if (d == 0) {
            clearTimeout(a);
            b = setInterval(function () {
                pos = pos - 10;
                if (pos >= (f - width) && pos >= -(e - width)) {
                    c.style.left = pos + "px"
                } else clearTimeout(b)
            }, 15)
        }
        if (d == 1) {
            clearTimeout(b);
            b = setInterval(function () {
                pos = pos + 10;
                if (pos <= (f + width) && pos <= 0) {
                    c.style.left = pos + "px"
                } else clearTimeout(b)
            }, 15)
        }
    },
    move1: function (d) {
        var a, b;
        var c = document.getElementById("season" + sea);
        var e = c.offsetWidth;
        var f = c.offsetLeft;
        if (d == 0) {
            clearTimeout(a);
            b = setInterval(function () {
                poz = poz - 10;
                if (poz >= (f - width) && poz >= -(e - width)) {
                    c.style.left = poz + "px"
                } else clearTimeout(b)
            }, 15)
        }
        if (d == 1) {
            clearTimeout(b);
            b = setInterval(function () {
                poz = poz + 10;
                if (poz <= (f + width) && poz <= 0) {
                    c.style.left = poz + "px"
                } else clearTimeout(b)
            }, 15)
        }
    }
});

в html добавляется вот так
<script type="text/javascript"> 
vk.init(); 
vk.show(1,[['серия 1','серия 2','серия 3']]);
</script>

Как сделать чтобы нумерация серий и сезонов была в обратном порядке?
Только начал учить js и пока не удается реализовать своими силами.
Думаю нужно дописать функцию reverse где то перед этими строками
for (var i = 0; i < c.length; i++) {
и
for (var j = 0; j < b[i].length; j++) {

Заранее спасибо за любую помощь!

Deff 10.03.2016 10:21

for (var i =  с.length-1;i>=0; i--) {

kovalenko3331 10.03.2016 13:27

Цитата:

Сообщение от Deff (Сообщение 410464)
for (var i =  с.length-1;i>=0; i--) {

Спасибо за ответ. Но к сожалению не работает так.

Deff 10.03.2016 22:06

Цитата:

Сообщение от kovalenko3331 (Сообщение 410520)
Спасибо за ответ. Но к сожалению не работает так.

var c= [0,1,2,3,4,5,6,7,8,9];
var c2 = [];
for (var i =  c.length-1;i>=0; i--) {c2.push(c[i]);}
alert(c2)

laimas 11.03.2016 03:13

Цитата:

Сообщение от kovalenko3331
vk.show(1,[['серия 1','серия 2','серия 3']]);

Если так, то почему в функции for (var i = 0; i < a; i++), чего перебирать то?

Можно просто извлекать элементы массива начиная с конца:

while(e = b.pop()) ...

kovalenko3331 11.03.2016 06:35

Deff, Еще раз спасибо за ответ!
Я немного не так описал вопрос, дело в том, что серии нумеруются автоматически. Но ваш ответ направил меня так сказать в нужное русло, и я решил задачу.

Alt3 04.06.2018 14:38

kovalenko3331,Не поделитесь секретом, а то я уже с этим скриптом замучился.


Часовой пояс GMT +3, время: 07:57.