Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 21.11.2014, 12:49
Аспирант
Отправить личное сообщение для Smike Посмотреть профиль Найти все сообщения от Smike
 
Регистрация: 01.06.2014
Сообщений: 33

Рони, я единственное не понял в примере, который вы скинули.
вот строка кода в функции setImage:
"old && old.classList.remove("active");"
откуда мы берем значение в переменной old (чтобы понять, в какой именно кнопке необходимо убрать красное свечение)?

ЗЫ. всем остальным. я не скрываю, что плохо знаю js. если бы моей задачей было просто прикрутить слайдер на какой-нибудь говносайт, я бы за полминуты нашел пример, сделанный на jquery.

я пишу на этом форуме, чтобы научиться. не думаю, что здесь есть люди, которые хорошо изучили js за пару месяцев (если это их первый язык программирования)
Ответить с цитированием
  #22 (permalink)  
Старый 23.11.2014, 10:30
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Нет там old, поскольку нет new. Последний щелкнутый элемент это стек глубиной вложения 1. Его можно расширить заменив переменную на массив: втыкать спереди, вытыкать сзади, получится типа хронология.

Ваш велосипед не имеет смысла потому что у вас href занят. Каким членом вы теперь откроете страницу по ссылке с картинки?

А чтобы беспонту крутить картинки js вообще не нужен - для этого давно юзают CSS3
Ответить с цитированием
  #23 (permalink)  
Старый 23.11.2014, 10:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Smike
откуда мы берем значение в переменной old
Сообщение от kostyanet
Последний щелкнутый элемент
остальное в сообщении kostyanet, недоступно для моего понимания
old = this; в этой строке храним нажатый
так как первый раз old пуст делаем проверку, чтоб неполучить ошибку.
if(old) {old.classList.remove("active")};
ну и конечно в коде бессмысленно болтается массив со ссылками.
Ответить с цитированием
  #24 (permalink)  
Старый 23.11.2014, 11:06
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от рони
недоступно для моего понимания
Признать себя дураком уже залог успеха развития мозга. Но есть и такие которые признают себя, но мозг не развивают - ленивые дураки.
Ответить с цитированием
  #25 (permalink)  
Старый 23.11.2014, 11:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Smike,
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo</title>
  <style type='text/css'>
    * {
	margin: 0;
	padding: 0;
}
ul {
	list-style: none;
}
#container {
	position: relative;
	top: 20px;
	width: 640px;
	height: 480px;
	margin: 0 auto;
	box-shadow: 0 0 5px 5px rgba(0, 0, 0, .5);
	transition: all .2s;
    background:  no-repeat center center;

}
#previous {
	position: absolute;
	left: 10px;
	top: 50%;
	margin-top: -20px;
	opacity: .5;
	cursor: pointer;
}
#previous:hover, #next:hover {
	opacity: 1;
}
#previous:active {
	margin-top: -18px;
}
#next:active {
	margin-top: -18px;
}
#next {
	position: absolute;
	right: 10px;
	top: 50%;
	margin-top: -20px;
	opacity: .3;
	cursor: pointer;
}
.nav {
	position: absolute;
	bottom: 0;
	left: 50%;
	width: 100px;
	margin-left: -50px;
}
.nav li {
	float: left;
	margin-right: 5px;
	margin-bottom: 5px;
	display: block;
	height: 10px;
	width: 10px;
	border: 2px solid #fff;
	border-radius: 50%;
}

.active {
	background-color: red;
}
  </style>



<script>
 window.onload = function() {
     (function() {
         var container = document.getElementById("container"),
             button = document.getElementById("next"),
             previous = document.getElementById("previous"),
             array = ["http://www.umnet.com/pic/diy/screensaver/3845b123-a01a.jpg", "http://www.iceis.pl/640x480/640x480_-_niagarafalls640x480.jpg", "http://www.umnet.com/pic/diy/screensaver/87832121-ea64.jpg", "http://www.blackberry-wallpapers.com/uploads/allimg/110514/2-1105142029510-L.jpg"],
             sliderRules = document.querySelectorAll(".nav li"),
             old,
             i = 0,
             j = sliderRules.length - 1,
             imgSet = function(link) {
                 container.style.backgroundImage = "url(" + link + ")";
             };

         function slideMove() {
             i += "next" == this.id ? 1 : -1;
             i == array.length && (i = 0);
             0 > i && (i = array.length - 1);
             sliderRules[i].click()
         };

         button.addEventListener("click", slideMove, false);
         previous.addEventListener("click", slideMove, false);

         for (; j > -1; j--) {
             var sliderRule = sliderRules[j];
             sliderRule.dataset.indx = j;
             sliderRule.addEventListener("click", setImage, false);
         };
         sliderRule.click();

         function setImage(e) {
             i = +this.dataset.indx;
             var link = array[i];
             var img = new Image();
             img.onload = function() {
                 imgSet(link);
             };
             img.src = link;
             img.complete && img.onload();
             old && old.classList.remove("active");
             old = this;
             old.classList.add("active");
             e.preventDefault();
         }
     }());

 }
</script>


</head>
<body>
  	<div id="container">
		<img src="https://www.gentec-eo.com/Content/images/home/slider/left-arrow.png" id="previous" width="40" height="40" >
		<img src="https://www.gentec-eo.com/Content/images/home/slider/right-arrow.png" id="next" width="40" height="40" >
		<ul class="nav">
			<li></li>
			<li></li>
			<li></li>
			<li></li>
		</ul>
	</div>

</body>
</html>
Ответить с цитированием
  #26 (permalink)  
Старый 23.11.2014, 11:18
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от рони
old = this; в этой строке храним нажатый
Да потому что поддались соблазну искорежить flow в угоду ЧСВ.

говнокод где надо думать что к чему, хотя думать тут не о чем:


old && old.classList.remove("active");
old = this;
old.classList.add("active");


код, где думать не о чем, поскольку все самоочевидно:

this.classList.add("active");
if(old)
  old.classList.remove("active");
old=this;


все потому что по-нашему нельзя чтобы все было просто и понятно - нация не оценит; по-нашему надо все простое и понятное превратить в замудреное гавно, чтоб оно плющило и таращило, чтобы такие как ТС задавали "глупые" вопросы что такое и откуда old.

Поэтому у вас дохуя очков, а у меня нихуя - вы протагонист национальной традиции.
Ответить с цитированием
  #27 (permalink)  
Старый 23.11.2014, 11:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Smike,
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo</title>
  <style type='text/css'>
    * {
	margin: 0;
	padding: 0;
}
ul {
	list-style: none;
}
#container {
	position: relative;
	top: 20px;
	width: 640px;
	height: 480px;
	margin: 0 auto;
	box-shadow: 0 0 5px 5px rgba(0, 0, 0, .5);
	transition: all .2s;
    background:  no-repeat center center;

}
#previous {
	position: absolute;
	left: 10px;
	top: 50%;
	margin-top: -20px;
	opacity: .5;
	cursor: pointer;
}
#previous:hover, #next:hover {
	opacity: 1;
}
#previous:active {
	margin-top: -18px;
}
#next:active {
	margin-top: -18px;
}
#next {
	position: absolute;
	right: 10px;
	top: 50%;
	margin-top: -20px;
	opacity: .3;
	cursor: pointer;
}
.nav {
	position: absolute;
	bottom: 0;
	left: 50%;
	width: 100px;
	margin-left: -50px;
}
.nav li {
	float: left;
	margin-right: 5px;
	margin-bottom: 5px;
	display: block;
	height: 10px;
	width: 10px;
	border: 2px solid #fff;
	border-radius: 50%;
}

.active {
	background-color: red;
}
  </style>



<script>
window.onload = function() {
     (function() {
         var container = document.getElementById("container"),
             button = document.getElementById("next"),
             previous = document.getElementById("previous"),
             array = ["http://www.umnet.com/pic/diy/screensaver/3845b123-a01a.jpg", "http://www.iceis.pl/640x480/640x480_-_niagarafalls640x480.jpg", "http://www.umnet.com/pic/diy/screensaver/87832121-ea64.jpg", "http://www.blackberry-wallpapers.com/uploads/allimg/110514/2-1105142029510-L.jpg"],
             sliderRules = document.querySelectorAll(".nav li"),
     
  
             j = sliderRules.length - 1,
             imgSet = function(link) {
                 container.style.backgroundImage = "url(" + link + ")";
             };
         container.addEventListener("click", newX, false);
         for (; j > -1; j--) {
             var sliderRule = sliderRules[j];
             sliderRule.dataset.indx = j;
         };
         sliderRule.classList.add("active");
         sliderRule.click();
         function newX(e) {
             var elem = e.target;
             var i = +elem.dataset.indx;
             if (isNaN(i)) return;
             var next = i + 1;
             next == array.length && (next = 0);
             var prev = i - 1;
             0 > prev && (prev = array.length - 1);
             button.dataset.indx = next;
             previous.dataset.indx = prev;
             document.querySelector('.active').classList.remove("active");
             sliderRules[i].classList.add("active")
             var link = array[i];
             var img = new Image();
             img.onload = function() {
                 imgSet(link);
             };
             img.src = link;
             img.complete && img.onload();
             e.preventDefault();
         }

     }());

 }
</script>


</head>
<body>
  	<div id="container">
		<img src="https://www.gentec-eo.com/Content/images/home/slider/left-arrow.png" id="previous" width="40" height="40" >
		<img src="https://www.gentec-eo.com/Content/images/home/slider/right-arrow.png" id="next" width="40" height="40" >
		<ul class="nav">
			<li></li>
			<li></li>
			<li></li>
			<li></li>
		</ul>
	</div>

</body>
</html>

Последний раз редактировалось рони, 23.11.2014 в 11:52.
Ответить с цитированием
  #28 (permalink)  
Старый 24.11.2014, 08:03
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

На сайте SO в старых ответах внизу, там где рейтинги нуль или меньше, можно наблюдать или тупейший ответ, или маргинальный ответ. Я много фишек нашел именно в том самом низе. Напишет понимающий правильный ответ, но никто не понял, пролетело. Ну или дурачок рядом изложит свое баянистое мировоззрение.

Буквально вчера было - http://stackoverflow.com/questions/2...y-key-of-table - самый популярный ответ вовсе не самый ответ, а ответ с тремя баллами - самый ответ.

Ну вот, я думаю Рони бы ошивался там в подвале со своими баянами, как и я со своими баянами. Потому что все делается вообще не так и так никто не делает как мы тут обсуждаем. Нормальные люди берут JQ, плугин и нахер им думать о баянах.
Ответить с цитированием
  #29 (permalink)  
Старый 24.11.2014, 15:56
Аспирант
Отправить личное сообщение для Smike Посмотреть профиль Найти все сообщения от Smike
 
Регистрация: 01.06.2014
Сообщений: 33

Огромное спасибо за помощь, Рони, я правда ценю то, что вы потратили свое время.

Увидимся в следующих темах)

ЗЫ. думал, что на прогерских форумах не ругаются так. =)))
Ответить с цитированием
  #30 (permalink)  
Старый 25.11.2014, 12:52
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Это все баттхерт, я в нете трещу уже лет 20, навидался. Роне он в ноги поклонится, так принято, а сделает как проще, поскольку не враг сам себе. Ну, если только интеллигент, тогда сделает как враг себе.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно сделать слайдер контента OgecuT Элементы интерфейса 2 23.07.2014 14:31
Новостной слайдер на bxslider malsyst Библиотеки/Тулкиты/Фреймворки 3 02.09.2013 10:32
Связать ползунковый слайдер и аккордеон... All_ex74 Элементы интерфейса 1 31.05.2013 13:20
Слайдер во время загрузки страницы v.v.dankiv jQuery 0 14.04.2013 11:16
jquery слайдер, анимация при переключении вкладки KiTaeZa Events/DOM/Window 1 05.09.2011 20:52