Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Объясните как работет этот код? (https://javascript.ru/forum/jquery/59100-obyasnite-kak-rabotet-ehtot-kod.html)

lexapiter25 27.10.2015 23:26

Объясните как работет этот код?
 
Объясните мне пожалуйста как работает следующий код
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 , вроде все понятно... написал кое что сам, а тут вообще не мгу понять логику...

lexapiter25 27.10.2015 23:46

Вот это не понимаю - "next().length" остальное вроде дошло, когда разобрался со скобками.

рони 27.10.2015 23:56

lexapiter25,
((current.next().length) ? если есть li следующий length = 1 от текущего работаем с ним иначе length = 0 переходим к первому li

рони 27.10.2015 23:58

lexapiter25,
http://javascript.ru/forum/misc/4829...razhenijj.html

lexapiter25 28.10.2015 01:03

Цитата:

Сообщение от Rise (Сообщение 393325)
lexapiter25, такая логика
if (current.next().length === 1) {
	if (current.next().hasClass('show') === true) {
		var next = $('div#rotator ul li:first');
	} else {
		var next = current.next();
	}
} else {
	var next = $('div#rotator ul li:first');
}

Понял спасибо..осталось вот с этим разобраться
next.css({opacity: 0.0})
.addClass('show')
.animate({opacity: 1.0}, 1000);

// Прячем текущую картинку
current.animate({opacity: 0.0}, 1000)
.removeClass('show');
То есть в какой момент он присваивает класс. Каждому следующему li пока не дойдет до первого? А когда дойдет, то удалит класс у него, что бы заново все началось? Так?
Или он удаляет класс show у li, которому он его только что присвоил, сразу после выполнения анимации?

lexapiter25 28.10.2015 01:05

Это вот кусок по куренту. var current = ($('div#rotator ul li.show')? $('div#rotator ul li.show') : $('div#rotator ul li:first'));

lexapiter25 28.10.2015 01:19

Цитата:

Сообщение от рони (Сообщение 393320)
lexapiter25,
((current.next().length) ? если есть li следующий length = 1 от текущего работаем с ним иначе length = 0 переходим к первому li

То есть в данном случае все li будут иметь lenght=1, пока не дойдут до последнего? А в конце получится, что li больше нет... иии что произойдет? будет возвращено false и переход к первому li? Так я понял?

рони 28.10.2015 01:23

Цитата:

Сообщение от lexapiter25
что произойдет

найдётся первый li -- получилась карусель
http://javascript.ru/forum/jquery/47...tml#post311109

lexapiter25 29.10.2015 01:16

Спасибо всем за ответы разобрался..

Lecseus 26.05.2016 10:37

Объяснил сам себе
 
Здравствуйте, я попытался сам себе объяснить, как работает кусок кода. Скажите, правильно ли я понимаю или что-то упускаю или что-то понимаю неверно?
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:


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