Главная

Контакты

Спички

Другие работы 1 2 3 4

 

В статье "Стильные чекбоксы" была описана технология изменения внешнего вида чекбоксов. В данной статье я использую практически идентичную технологию.

Код скрипта:

<style>

body { font: 12px verdana }

.no { background: url(white.gif) no-repeat; padding-left: 22px; height: 22px; cursor: default }

</style>

<body>

<form>
<input type="hidden" id="groupbox" name="groupbox" value="0">
</form>

<div class="no" id="div1" onclick="checked(1)">Element one</div>
<div class="no" id="div2" onclick="checked(2)">Element two</div>
<div class="no" id="div3" onclick="checked(3)">Element three</div>

<script language="JavaScript">

var white = new Image;
var green = new Image;

white.src = "white.gif";
green.src = "green.gif";

function checked(num) {

sel = document.getElementById("groupbox").value;

if (num != sel) {

if (sel != 0) document.getElementById("div"+sel).style.background = "url(" + white.src + ") no-repeat";
document.getElementById("div"+num).style.background = "url(" + green.src + ") no-repeat";
document.getElementById("groupbox").value = num;

}

}

</script>

</body>

Для управления тремя радиокнопка нам необходим один элемент типа hidden, которому мы будем присваивать значения выделенной радиокнопки.

При нажатии на кнопку происходит обращение к функции checked, которой передается номер выделенной кнопки.

Если он не совпадает с текущей выделенной:

sel = document.getElementById("groupbox").value;
if (num != sel) ...

тогда мы убираем выделение у выделенной радиокнопки (меняем бэкгроунд), ставим выделение нажатой кнопки (опять же при помощи бэкгроунда) и присваиваем объекту hidden номер выделенной кнопки:

document.getElementById("groupbox").value = num

Обратите внимание, что мы обратились к предзагрузке фонов:

var white = new Image;
var green = new Image;

white.src = "white.gif";
green.src = "green.gif";

чем способствовали удобству пользователя, которому не придется ждать подзагрузки картинки выделенной кнопки.

 

© 2007 ABV-Design. Раскрутка сайта ООО "СЕО"

карта