Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Одно из трех (https://javascript.ru/forum/dom-window/1314-odno-iz-trekh.html)

Макс 15.06.2008 22:42

Одно из трех
 
Проблема такая: вот скрипт
<html>
       <head>
	<style type="text/css">
	.texts {
		margin:0px;
		padding:0px;
	}
	p {
		background-color:lightsteelblue;
		padding:2px;
		width:326px;
		clear:both
	}
	.DIVstandart {
		float:left;
		margin:0px;
		padding:0px 7px 0px 7px;
		cursor:pointer;
		background-color:white;
	}
	</style>
	<script>
	function checkOn(obj) {
		if(obj.style.backgroundColor == "") {
			obj.style.backgroundColor = "lightsteelblue";
		} else if(obj.style.backgroundColor == "lightsteelblue") {
			obj.style.backgroundColor = "";
		}
	}
	</script>
       </head>
       <body>
	<div class="DIVstandart" id="folder1" onclick="checkOn(this)">Город</div>
	<div class="DIVstandart" id="folder2" onclick="checkOn(this)">Улица</div>
	<div class="DIVstandart" id="folder3" onclick="checkOn(this)">Номер</div>
	<p>
	<input type="text" size="50" class="texts">
	</p>
       </body>
</html>

Подскажите как сделать так чтоб при нажатии на каком-нибудь элементе DIV выделялся всегда один элемент синим а остальные оставались не выделенными. Т.е если нажал на "Город", то "Улица и Номер" оставались не выделенными, а если нажал на "Улицу", то "Город и Номер" остались невыделенными.

Помогите! Плиз, очень надо!
Жду ответа.

Заранее благодарен!

Gvozd 15.06.2008 23:09

function checkOn(obj)
{
if( obj.style.backgroundColor=="" && arguments.callee.checked==0)
	{
	arguments.callee.checked=1;
	obj.style.backgroundColor = "lightsteelblue";
	}
else if(obj.style.backgroundColor == "lightsteelblue")
	{
	arguments.callee.checked=0;
	obj.style.backgroundColor = "";
	}
}
checkOn.checked=0;//вводим как свойство функции, флаг, символизирующий выделенность какого-нибудь объекта

Макс 15.06.2008 23:28

Gvozd,
Спасибо! Но малость не так. Когда я выделяю какой-нибудь див, остальные невозможно выделить т.е. выделенный див требует чтоб на него еше раз нажали. А суть в том что бы можно было переключать дивы независимо
Например:
я нажал на Город он выделился, затем я нажал на Адрес он выделился, а Город сразу отключился. Вот такой принцип.
Ты бы мог мне помочь в этом?
Заранее благодарен!

Gvozd 15.06.2008 23:52

После нажатия на выделенный элемент, выделение снимается
function checkOn(obj)
{
if( obj.style.backgroundColor=="" && arguments.callee.checked_node==undefined)
	{
	arguments.callee.checked_node=obj;
	obj.style.backgroundColor = "lightsteelblue";
	}
else if( obj.style.backgroundColor=="" && arguments.callee.checked_node!=undefined)
	{
	arguments.callee.checked_node.style.backgroundColor="";
	arguments.callee.checked_node=obj;
	obj.style.backgroundColor = "lightsteelblue";
	}
else if( obj.style.backgroundColor == "lightsteelblue")
	{
	arguments.callee.checked_node=undefined;
	obj.style.backgroundColor = "";
	}
}

После нажатия на выделенный элемент, выделение не снимается
function checkOn(obj)
{
if( obj.style.backgroundColor=="" && arguments.callee.checked_node==undefined)
	{
	arguments.callee.checked_node=obj;
	obj.style.backgroundColor = "lightsteelblue";
	}
else if( obj.style.backgroundColor=="" && arguments.callee.checked_node!=undefined)
	{
	arguments.callee.checked_node.style.backgroundColor="";
	arguments.callee.checked_node=obj;
	obj.style.backgroundColor = "lightsteelblue";
	}
}

ЗЫ надеюсь, теперь я ответил на ваш вопрос.
ЗЫЫ формулируйте более конкретно. ваша вторая формулировка, как и первая, не является полной;)

Макс 16.06.2008 01:24

Да вот оно спасибо огромное!


Часовой пояс GMT +3, время: 11:03.