|
|
Да, просто замени весь шаблон на этот:
|

15.05.2012, 21:15
|
|
Новичок на форуме
|
|
Регистрация: 15.05.2012
Сообщений: 5
|
|
|
Смена стилей объектов?
Всем доброго времени суток.
В программировании я не силен и поэтому решился задать вопрос знающим.
Есть 4 дива, у каждого картинка и подпись. Когда нажимаем на один, то у него меняется цвет фона, при нажатии на другой - тоже самое, но предыдущий возвращается в исходное положение.
<style type="text/css">
.ugol_inv {border: red solid 5px;}
</style>
<script type="text/javascript">
var lastColor = null;
function setColor( ug ) {
if (lastColor)
lastColor.className = lastColor.className.replace(' ugol_inv', '');
ug.className += ' ugol_inv';
lastColor = ug;
}
</script>
<img src="ugol" onclick="setBorderU(this);">
<img src="ugol" onclick="setBorderU(this);">
<img src="ugol" onclick="setBorderU(this);">
<img src="ugol" onclick="setBorderU(this);">
Все это хорошо, но не могу дотумкать, как сделать так, чтобы при загрузке страницы первый див уже был "выделенным", а при нажатии на другие соответственно становился "не выделенным".
Заранее спасибо за ответы.
|
|

15.05.2012, 23:59
|
|
Профессор
|
|
Регистрация: 16.05.2011
Сообщений: 307
|
|
У меня вЫшло так
<style>
div {
border:1px solid red;float:left;width:100px;height:100px;
margin-right:10px;
}
.red{background:red;}
.blue{background:blue;}
</style>
</head>
<body>
<div>1</div>
<div class="blue">2</div>
<div>3</div>
<div>4</div>
<script>
divs=document.getElementsByTagName('div')
function handler( e ){
for(i=0;i<divs.length;i++){
divs[i].style.backgroundColor='white'
}
//alert(this.innerHTML)
this.style.backgroundColor='red'
}
divs=document.getElementsByTagName('div')
eventType = document.addEventListener ? ["addEventListener", ""] : ["attachEvent", "on"];
for( var i = 0; i < divs.length; i++ ) {
divs[ i ][ eventType[ 0 ] ]( eventType[ 1 ] + "click", function( e ){
e = e || window.event;
handler.call( e.target || e.srcElement, e );
}, false );
}
</script>
Кто знает как проще сделать эту задачу???
__________________
Я только учусь.Ногами просьба не бить
|
|

16.05.2012, 00:22
|
|
Новичок на форуме
|
|
Регистрация: 15.05.2012
Сообщений: 5
|
|
пасиб, работает
только вот IE просит разрешения на исполнение ActiveX 
попробуем подождать еще вариантов 
|
|

16.05.2012, 07:03
|
 |
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
|
Сообщение от chinga
|
|
только вот IE просит разрешения на исполнение ActiveX
|
А вы хотели обойтись без скриптов??
<style>
div.green {background: green; color: yellow}
div.yellow {background: yellow; color: green}
</style>
<div id="myDiv" style="cursor: pointer">
<div>first content</div>
<div>second content</div>
<div>third content</div>
<div>fourth content</div>
</div>
<script>
(function wizard() {
var div = myDiv.getElementsByTagName('div');
var dl = div.length;
var curDiv = div[0];
getCurDiv = function() {return curDiv}
setCurDiv = function(value) {curDiv = value}
div[0].className = 'green';
for (var i = 1; i < dl; i++) {
div[i].className = 'yellow'
}
})();
myDiv.onclick = function (e) {
var e = e || window.event;
var target = e.target || e.srcElement;
if (target != getCurDiv()) {
target.className = 'green';
getCurDiv().className = 'yellow'
setCurDiv(target);
}
}
</script>
Последний раз редактировалось bes, 16.05.2012 в 13:47.
|
|

16.05.2012, 07:26
|
 |
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Без скриптов можно сделать такое.
<style>
div {background: yellow; color: green; cursor: pointer}
div:hover {background: green; color: yellow}
</style>
<div>first content</div>
<div>second content</div>
<div>third content</div>
<div>fourth content</div>
Или такое
<style>
div {background: yellow; color: green; cursor: pointer}
div:active {background: green; color: yellow}
</style>
<div>first content</div>
<div>second content</div>
<div>third content</div>
<div>fourth content</div>
|
|

16.05.2012, 08:04
|
|
Профессор
|
|
Регистрация: 16.05.2011
Сообщений: 307
|
|
bes подправь скрипт,не работает 
__________________
Я только учусь.Ногами просьба не бить
|
|

16.05.2012, 09:27
|
 |
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
|
В хроме работает, в IE нет (в этих двух браузерах дело не в myDiv вместо document.getElementById('myDiv') ).
IE почему-то не получает target в функции click(), почему не могу понять.
|
|

16.05.2012, 09:39
|
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
bes,
function click(e){
if(!e) e = event;
var target = e.target || e.srcElement
.....
|
|

16.05.2012, 10:13
|
 |
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
|
melky, IE8 это не помогает
|
|

16.05.2012, 10:31
|
|
Новичок на форуме
|
|
Регистрация: 15.05.2012
Сообщений: 5
|
|
ActiveX (да и вообще замечания от браузера) многие не продвинутые пользователи пугаются 
вообще у меня идет связка дивов с select option (я их прячу и вывожу данные дивами). у одного option имеется selected, может к этому сделать привязку?
|
|
|
|