Прокрутка изображений
Помогите реализовать прокрутку изображений.
Принцип таков. На экране три картинки. По нажатию на кнопку "myDiv1", все три изображения меняются. То есть: первая картинка меняется на вторую, вторая на третью, третья - новая картинка. То есть смена картинок происходит на единицу. На данный момент меняется только одна - третья. Вот сам код: var myDiv1 = document.getElementById('myDiv1'); // кнопка Next var myDiv2 = document.getElementById('myDiv2'); // отображение изображений var myDiv3 = document.getElementById('myDiv3'); // кнопка Previos var myPath = new Array // массив с путями к картинкам ( 'images/cars_001.jpg', 'images/cars_002.jpg', 'images/cars_003.jpg', 'images/cars_004.jpg', 'images/cars_005.jpg', 'images/cars_006.jpg', 'images/cars_007.jpg', 'images/cars_008.jpg', 'images/cars_009.jpg' ) var myImages=new Array(); // предзагрузка изображений for(i=0; i<myPath.length; i++) { myImages[i] = new Image(); myImages[i] = myPath[i]; } var j = 0 ; k = 3; // количество отображаемых картинок (3 штуки) for (j; j<k; j++) // вывод первых трёх картинок { var myImg = document.createElement ('IMG'); myDiv2.appendChild(myImg); myImg.src = myImages[j] } myDiv1.onclick = function () // прокрутка изображений: следующаая картинка. То что нужно реализовать. { j++; k++; myImg.src = myImages[j] } И HTML <div id="myDiv1" class="myDiv">Вперед</div> <div id="myDiv2" class="myDiv"> </div> <div id="myDiv3" class="myDiv">Назад</div> Спасибо за помощь. |
<div id="next" class="myDiv">Вперед</div> <div id="pic" class="myDiv"> </div> <div id="prev" class="myDiv">Назад</div> <script> var next = document.getElementById('next'); // кнопка Next var myDiv2 = document.getElementById('pic'); // отображение изображений var prev = document.getElementById('prev'); // кнопка Previos // *!* тут мои картинки. подставил,чтобы видеть,все ли ок. можно,конечно,заменить на свой массив */!* var myPath = [ // массив с путями к картинкам 'http://worms.org.ua/forum/medals/missions1.gif', 'http://cs9846.vkontakte.ru/u56640186/a_926164aa.jpg', 'http://cs957.vkontakte.ru/u56640186/108183787/x_a11bbb4c.jpg', 'http://javascript.ru/forum/image.php?u=12584&dateline=1301573529', 'http://javascript.ru/forum/images/smilies/haha.gif' ] var myImages=[] ;// предзагрузка изображений for(i=0; i<myPath.length; i++) { myImages[i] = new Image(); myImages[i]*!*.src*/!* = myPath[i]; } var j = 0 ; k = 3; // количество отображаемых картинок (3 штуки) for (j; j<k; j++) // вывод первых трёх картинок { //*!* магия : мы создаем новую картинку */!* //var myImg = document.createElement ('IMG'); //*!* магия : присваиваем ей путь,равный УЖЕ СУЩЕСТВУЮЩЕЙ . от этого путь становится равным [object HTMLImageElement]*/!* // myImg.src = myImages[j]; // вот так в 3 раза меньше кода myDiv2.appendChild( myImages[j] ); } next.onclick = function () // прокрутка изображений: следующаая картинка. То что нужно реализовать. { j++; k++; myImg.src = myImages[j] } </script> кстати,что будет ,если нажать на вперед / назад? я про логику. что будет? какая картинка должна меняться ? все три ?? или вообще, что должно происходить? если бы она была одна,все бы было ясно. но когда их три... |
gen552,
получи массив тегов img. и пройди по нему-меняя атрибут src. ну а в том что у тебя 3й меняется-всё правильно-он последний созданный и только ему ты меняешь атрибут Цитата:
|
Вот, сделал :)
myDiv1.onclick = function () // прокрутка изображений: следующаая картинка { var allImg = myDiv2.getElementsByTagName("IMG"); myImg.getAttribute('id'); var myAllImages = new Array(); for (i=0; i< allImg.length; i++) { myAllImages[i] = new Image(); myAllImages[i] = allImg[i] myAllImages[i].src = myImages[j++]; myAllImages[i].setAttribute ('id', 'myImages' + j); } // console.log (myAllImages) Только есть нюанс. Изображения меняются не по одной картинке, а сразу по три. Тоже неплохо, но интересно было бы ещё и такой вариант реализовать. То есть, допустим есть всего 15 картинок (массив). На экране отображено три: 1,2,3. Нажимаем на кнопку Next и на экране видим 2,3,4. Снова нажимаем Next и видим 3,4,5 -> 4,5,6 -> 5,6,7 -> ... 13,14,15. Как это реализовать исходя из кода выше? А на данный момент так происходит: 1,2,3 -> 4,5,6 -> 7,8,9 -> 10,11,12 -> 13,14,15 И ещё вопрос. Я создал Id для каждого изображения. Меняется картинка - меняется Id. Всё работает. Но! Когда самый первый раз нажимаю на кнопку Next, то вместо myImages3 получаю myImages4. Поясню. Id - идентифекатор, К - картинка. myImages0 - К0 myImages1 - К1 myImages2 - К2 Нажимаем кнопку Next и картина следующая: myImages4 - К3 myImages5 - К4 myImages6 - К5 myImages7 - К6 myImagesN - КN Ну а дальше нумерация по порядку идёт. То есть вот здесь : myImages4 - К3, должно быть вот так :myImages3 - К3 Немогу понять, почему пропускает цифру 3. |
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Вот как здесь. ![]() Не мое, но пытаюсь такое сделать. А я хочу что бы было вот так: Цитата:
Цитата:
Вообще я думаю должно быть вот так: var j = 0 ; k = 3; // количество отображаемых картинок (3 штуки) Жмём Next var j = 1 ; k = 4; Жмём Next var j = 2; k = 5; Жмём Next var j = 3; k = 6; Жмём Next ... ... ... ... var j = N; k = N; Т.е. как то менять значения глобальных переменных на 1. Таким образом вообще можно будет задавать по сколько изображений за раз прокручивать. Если указать так var j = 2 ; k = 5 - то по два изображения. Если так : var j = 3 ; k = 6 то по три, т.е. так как на данный момент происходит. Цитата:
У меня и изображение 4-ое пропускало. По-этому пришлось сделать так: myAllImages[i].src = myImages[j++]; вместо традиционного j++; ... ...; Вообще я так и понял что проблема в "J". Просто не могу додуматься что именно ему не так. |
посмотри на его значения. поймёшь всё сам.ошибка в логике
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 22:25. |