Объясните как работет этот код?
Объясните мне пожалуйста как работает следующий код
var next = ((current.next().length) ? ((current.next().hasClass('show')) ? $('div#rotator ul li:first') :current.next()) : $('div#rotator ul li:first')); а именно его часть в скобках Что он делает я зная, но я не понимю как.. То есть что происходит тут (current.next().length) и вот тут ((current.next().hasClass('show')) и тд. И как почитать то что сначала идет условие, потом сразу еще условие... Воде просмотрел курс "Специалиста" по jquery , вроде все понятно... написал кое что сам, а тут вообще не мгу понять логику... |
Вот это не понимаю - "next().length" остальное вроде дошло, когда разобрался со скобками.
|
lexapiter25,
((current.next().length) ? если есть li следующий length = 1 от текущего работаем с ним иначе length = 0 переходим к первому li |
|
Цитата:
next.css({opacity: 0.0}) .addClass('show') .animate({opacity: 1.0}, 1000); // Прячем текущую картинку current.animate({opacity: 0.0}, 1000) .removeClass('show'); То есть в какой момент он присваивает класс. Каждому следующему li пока не дойдет до первого? А когда дойдет, то удалит класс у него, что бы заново все началось? Так? Или он удаляет класс show у li, которому он его только что присвоил, сразу после выполнения анимации? |
Это вот кусок по куренту. var current = ($('div#rotator ul li.show')? $('div#rotator ul li.show') : $('div#rotator ul li:first'));
|
Цитата:
|
Цитата:
http://javascript.ru/forum/jquery/47...tml#post311109 |
Спасибо всем за ответы разобрался..
|
Объяснил сам себе
Здравствуйте, я попытался сам себе объяснить, как работает кусок кода. Скажите, правильно ли я понимаю или что-то упускаю или что-то понимаю неверно?
function kontroll9(){ var answer = document.getElementById("otvet9"), - переменная, которая будет хранить элемент в html коде, который отвечает за блок, выводящий ответ. vastus = document.getElementsByName("v9"), - создается переменная vastus, которая хранит в себе группу элементов (radio или checkbox) под определенным айди в html коде array = [1,1,1,0]; //массив булевских значений, верные ответы 1 array = array.every(function(check, i){ // перебор элементов в массиве. переменной array присваивается значение массива, обработанного функцией every. every это функция, которая проверяет все ли элементы в массиве прошли тест, который задан функцией. Сама функция задает правило, при котором функция возвращает значение параметра check, в случае если функция every прошла успешно проверку по заданному критерию, то есть равна булевому значению true. return check == vastus[i].checked - возвращает значение параметра check, в случае если функция every прошла успешно проверку по заданному критерию, то есть по значениям, которые находятся в массиве array }) answer.innerHTML = array ? "верно" : "неверно"; - в элементе answer выводится значение, которое получается при проверке переменной array. знак ? означает, что если значение true, то выводится надпись "верно", а : означает, что иначе выводится "неверно". answer.style.color = array ? "green" : "red"; array && correct++; - увеличивает количество правильных ответов на 1. }; и ещё, я не пойму, зачем тут в конце не только correct++ но и array++??? спасибо заранее:help: |
Цитата:
array && correct++; тоже что if(array == true) correct++; если ответ правильный общее количество правильных ответов увеличить на 1. |
СпасибО!!!!
Точно, нет такого в коде, невнимателен. А так понимаю верно? |
Цитата:
|
большая благодарность!
|
Lecseus,
Цитата:
Не айди, а нейм. Кроме того, у группы элементов не может быть одинакового айди (написать можно, работать будет неправильно, вообще непредсказуемо) |
Цитата:
|
Интересно получается, то есть массив становится булевым значением только в двух положениях [1,0,1,1] - true, а [0,1,0,0] - false и никак иначе.
|
Lecseus,
нет массив становится true только при одном правильном ответе из 16 возможных |
Lecseus,
все четыре чекбокса должны быть правильно выбраны <script> for (var i=0; i<16; i++) { var a = ("000"+i.toString(2)).substr(-4), b = [1,0,1,1].every(function(el,k) { return el == a[k] }) document.write(a+" => "+b+"<br>")} </script> |
var a = ("000"+i.toString(2)).substr(-4)
даа. вы не могли бы объяснить эту строчку пожалуйста? |
Lecseus,
i.toString(2) преобразовать число i в двоичную систему, на всякий случай слева дописать нули ("000"+i.toString(2)) и взять четыре знака с конца . i = 3; a= "11";//toString(2) a= "00011";//("000"+i.toString(2)) a="0011" //("000"+i.toString(2)).substr(-4) условно: 2 первых чека не нажаты, 3 и 4 чекбоксы нажаты checked. |
очень полезно. благодарю! скажите, как у вас так получается мыслить? мне иногда кажется, что я не понимаю чего-то главного и из-за этого даже маленькие куски кода уже создают хаос в моей голове.
|
Lecseus,
сам удивляюсь :) |
:)
|
Часовой пояс GMT +3, время: 17:57. |