Переключатель картинок
Доброго времени суток. Я тут бьюсь над созданием блока с кучей картинок которые переключаются по клику. Вот что у меня вышло:
Сам блок, при нажатии на которые картинка переключается
<style>
.no { background: url(/images/001/01.png) no-repeat; background-position: center top; height: 1400px; cursor: pointer;}
</style>
<form method="post">
<input type="hidden" id="checkbox1" name="checkbox1" value="1">
</form>
<div class="no" id="div1" onclick="checked('div1', 'checkbox1', 'sel')"></div>
И скрипт к нему
<script language="JavaScript">
function checked (divs, box, sel)
{
var val = document.getElementById (box).value * 1 + 1 ;
if(document.getElementById (box).value<9)
{
document.getElementById (divs).style.background = "url('/images/001/0" + val + ".png') no-repeat center top ";
document.getElementById (box).value = val;
document.getElementById (sel).value = val;
}
else
{
document.getElementById (divs).style.background = "url('/images/001/" + val + ".png') no-repeat center top ";
document.getElementById (box).value = val;
document.getElementById (sel).value = val;
}}
</script>
И у меня еще есть выпадающая менюшка:
<select id="sel" name="sel" title="Номер страницы" style="width: 100px;"><option value="1" selected>1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
Так вот у меня не получилось сделать чтобы при нажатии на пункты этой менюхи картинка переключалась на нужную. И не получилось сделать кнопку "предыдущая картинка" Помогите дописать, а то я уже не знаю как быть |
ничего не понятно
|
festerod, сделай полный тестовый пример а не куски какие-то...
|
Вот изваял... На самом деле я тоже совсем недавно начал изучать JS и единственное на что меня хватило так это на:
<html>
<head>
<style>
#Picture {
background-image:url(../img/1.jpg);
background-color: black;
width: 100px;
height: 100px;
}
</style>
</head>
<body>
<select id="select1">
<option value="1">First Picture</option>
<option value="2">Second Picture</option>
<option value="3">Third Picture</option>
<option value="4">Fourth Picture</option>
</select>
<input id="button1" type="button" value="Next"/>
<input id="button2" type="button" value="Previous"/>
<div id="Picture"></div>
<script type="text/javascript">
document.getElementById('button1').onclick = function(){
var k = document.getElementById('select1').value;
if (document.getElementById('select1').value < 4) {
k++;
document.getElementById('Picture').style.backgroundImage = "url(../img/" +k+".jpg)";
document.getElementById('select1').value++;
};
};
document.getElementById('button2').onclick = function(){
var k = document.getElementById('select1').value;
if (document.getElementById('select1').value > 1) {
k--;
document.getElementById('Picture').style.backgroundImage = "url(../img/" +k+".jpg)";
document.getElementById('select1').value--;
};
};
document.getElementById('select1').onchange = function(){
var k = document.getElementById('select1').value;
document.getElementById('Picture').style.backgroundImage = "url(../img/" +k+".jpg)";
}
</script>
</body>
</html>
Собственно, функции вроде как понятно что делают... |
Soul D Esire,
спасибо, это почти то что надо, только не подскажешь как сделать чтобы картинка была не фоном и при клике на нее она переключалась на следующую |
Ну можно оставить картинку в <div> и навесить на блок событие, например, на клик мыши. Что-то типа:
document.getElementById('Picture').onclick = function(){
var k = document.getElementById('select1').value;
if (document.getElementById('select1').value < 4) {
k++;
document.getElementById('Picture').style.backgroundImage = "url(../img/" +k+".jpg)";
document.getElementById('select1').value++;
} else {
document.getElementById('Picture').style.backgroundImage = "url(../img/" +1+".jpg)";
document.getElementById('select1').value = 1;
}
};
Сорри, если есть косяки в коде... Пишу без возможности проверить, что я пишу)) но вроде должно работать... |
Soul D Esire, в js есть такая арифметическая операция как % (Модуль числа). Так вот она ооочень удобна для таких случаев. Твой пример примет вид
document.getElementById('Picture').onclick = function(){
var k = document.getElementById('select1').value;
k = parseInt(k);
k++;
k = k%4;
k = (k==0)? 1: k;
document.getElementById('Picture').style.backgroundImage = "url(../img/" +k+".jpg)";
document.getElementById('select1').value=k;
};
Цитата:
|
Угу, понял) Стало красивее и изящнее) Только вот % - это вроде как остаток от целочисленного деления, а не модуль)
|
Цитата:
http://javascript.ru/arithmetic В институте мне его давали как "деление по модулю". |
Ну для меня запись -7%2 = -(7%2) = -(1) = -1... Тот же унарный минус, навешанный на целочисленное деление...
Для мя модуль = это функция abs() из библиотеки Math)) |
| Часовой пояс GMT +3, время: 20:49. |