21.11.2014, 12:49
|
Аспирант
|
|
Регистрация: 01.06.2014
Сообщений: 33
|
|
Рони, я единственное не понял в примере, который вы скинули.
вот строка кода в функции setImage:
"old && old.classList.remove("active");"
откуда мы берем значение в переменной old (чтобы понять, в какой именно кнопке необходимо убрать красное свечение)?
ЗЫ. всем остальным. я не скрываю, что плохо знаю js. если бы моей задачей было просто прикрутить слайдер на какой-нибудь говносайт, я бы за полминуты нашел пример, сделанный на jquery.
я пишу на этом форуме, чтобы научиться. не думаю, что здесь есть люди, которые хорошо изучили js за пару месяцев (если это их первый язык программирования)
|
|
23.11.2014, 10:30
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Нет там old, поскольку нет new. Последний щелкнутый элемент это стек глубиной вложения 1. Его можно расширить заменив переменную на массив: втыкать спереди, вытыкать сзади, получится типа хронология.
Ваш велосипед не имеет смысла потому что у вас href занят. Каким членом вы теперь откроете страницу по ссылке с картинки?
А чтобы беспонту крутить картинки js вообще не нужен - для этого давно юзают CSS3
|
|
23.11.2014, 10:48
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,122
|
|
Сообщение от Smike
|
откуда мы берем значение в переменной old
|
Сообщение от kostyanet
|
Последний щелкнутый элемент
|
остальное в сообщении kostyanet, недоступно для моего понимания
old = this; в этой строке храним нажатый
так как первый раз old пуст делаем проверку, чтоб неполучить ошибку.
if(old) {old.classList.remove("active")};
ну и конечно в коде бессмысленно болтается массив со ссылками.
|
|
23.11.2014, 11:06
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Сообщение от рони
|
недоступно для моего понимания
|
Признать себя дураком уже залог успеха развития мозга. Но есть и такие которые признают себя, но мозг не развивают - ленивые дураки.
|
|
23.11.2014, 11:11
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,122
|
|
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>
|
|
23.11.2014, 11:18
|
Профессор
|
|
Регистрация: 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.
Поэтому у вас дохуя очков, а у меня нихуя - вы протагонист национальной традиции.
|
|
23.11.2014, 11:50
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,122
|
|
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.
|
|
24.11.2014, 08:03
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
На сайте SO в старых ответах внизу, там где рейтинги нуль или меньше, можно наблюдать или тупейший ответ, или маргинальный ответ. Я много фишек нашел именно в том самом низе. Напишет понимающий правильный ответ, но никто не понял, пролетело. Ну или дурачок рядом изложит свое баянистое мировоззрение.
Буквально вчера было - http://stackoverflow.com/questions/2...y-key-of-table - самый популярный ответ вовсе не самый ответ, а ответ с тремя баллами - самый ответ.
Ну вот, я думаю Рони бы ошивался там в подвале со своими баянами, как и я со своими баянами. Потому что все делается вообще не так и так никто не делает как мы тут обсуждаем. Нормальные люди берут JQ, плугин и нахер им думать о баянах.
|
|
24.11.2014, 15:56
|
Аспирант
|
|
Регистрация: 01.06.2014
Сообщений: 33
|
|
Огромное спасибо за помощь, Рони, я правда ценю то, что вы потратили свое время.
Увидимся в следующих темах)
ЗЫ. думал, что на прогерских форумах не ругаются так. =)))
|
|
25.11.2014, 12:52
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Это все баттхерт, я в нете трещу уже лет 20, навидался. Роне он в ноги поклонится, так принято, а сделает как проще, поскольку не враг сам себе. Ну, если только интеллигент, тогда сделает как враг себе.
|
|
|
|