Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Действие написанное на несколько id (https://javascript.ru/forum/misc/16266-dejjstvie-napisannoe-na-neskolko-id.html)

BorodinKO 31.03.2011 23:13

Действие написанное на несколько id
 
<div id="bm">Текст1</div>
<div id="bm">Текст2</div>
<div id="bm">Текст3</div>

Как без изменения Html кода изменить class того элемента на который наведен курсор?

мой код:
document.getElementById('bm').onmouseover=function (){
	this.className = "action";
}


в результате работает только первый элемент Текст1

melky 31.03.2011 23:46

Цитата:

Сообщение от BorodinKO (Сообщение 98813)
<div id="bm">Текст1</div>
<div id="bm">Текст2</div>
<div id="bm">Текст3</div>

Как без изменения Html кода изменить class того элемента на который наведен курсор?

мой код:
document.getElementById('bm').onmouseover=function (){
	this.className = "action";
}


в результате работает только первый элемент Текст1

конечно только он будет работать. ID предполагает уникальный идентификатор, а не общий. общий - это класс, атрибут, имя тега наконец.

смотрите, вот

<style>
div { border-left: 5px white solid;  }
.bm {
border-color: red;
}
.action {
border-color: yellow;
}
</style>

<div class="bm">Текст1</div>
<div class="bm">Текст2</div>
<div class="bm">Текст3</div>

<script>
var arr = document.getElementsByTagName('div');
function a(){  this.className = ( this.className === "action" )? "bm" : "action";  }
for(var i = 0, b = arr.length ; i<b;i++){
 arr[i].onmouseover = a;

// можно убрать mouseout тогда он будет багнутый.
 arr[i].onmouseout = a;
}
</script>


я думаю,для этого это затевалось

хочу вас расстроить,сделать это можно было через CSS


<style>
div { border-left: 5px white solid;  }
.bm {
border-color: red;
}
.bm:hover {
border-color: yellow;
}
</style>

<div class="bm">Текст1</div>
<div class="bm">Текст2</div>
<div class="bm">Текст3</div>

BorodinKO 31.03.2011 23:57

Цитата:

хочу вас расстроить,сделать это можно было через CSS
.onmouseover я поставил для наглядность ... а вообще у меня другая функция должна быть =)

melky 31.03.2011 23:58

тогда я вас неправильно понял :)

я думал, это костыль для IE 6 (по-моему, это у него нет :hover )

ну да ладно. спокойной ночи!

BorodinKO 01.04.2011 00:10

угу .. спасибо ...

BorodinKO 01.04.2011 00:26

А вот как тогда сделать чтобы сначала классы action убирались у тех элементов где они заданны (class="bm action"), а затем уже запускался остальной код.

[JS]<style>
div { border-left: 5px white solid;  }
.bm {
border-color: red;
}
.action {
border-color: yellow;
}
</style>

<div class="bm">Текст1</div>
<div class="bm action">Текст2</div>
<div class="bm">Текст3</div>

<script>
var arr = document.getElementsByTagName('div');
function a(){  this.className = ( this.className === "action" )? "bm" : "action";  }
for(var i = 0, b = arr.length ; i<b;i++){
 arr[i].onmouseover = a;

 arr[i].onmouseout = a;
}
</script>[/JS]


Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.


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