Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.05.2012, 22:15
Новичок на форуме
Отправить личное сообщение для chinga Посмотреть профиль Найти все сообщения от chinga
 
Регистрация: 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);">

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

Заранее спасибо за ответы.
Ответить с цитированием
  #2 (permalink)  
Старый 16.05.2012, 00:59
Профессор
Отправить личное сообщение для bot87 Посмотреть профиль Найти все сообщения от bot87
 
Регистрация: 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>


Кто знает как проще сделать эту задачу???
__________________
Я только учусь.Ногами просьба не бить
Ответить с цитированием
  #3 (permalink)  
Старый 16.05.2012, 01:22
Новичок на форуме
Отправить личное сообщение для chinga Посмотреть профиль Найти все сообщения от chinga
 
Регистрация: 15.05.2012
Сообщений: 5

пасиб, работает
только вот IE просит разрешения на исполнение ActiveX
попробуем подождать еще вариантов
Ответить с цитированием
  #4 (permalink)  
Старый 16.05.2012, 08:03
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 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 в 14:47.
Ответить с цитированием
  #5 (permalink)  
Старый 16.05.2012, 08:26
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 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>
Ответить с цитированием
  #6 (permalink)  
Старый 16.05.2012, 09:04
Профессор
Отправить личное сообщение для bot87 Посмотреть профиль Найти все сообщения от bot87
 
Регистрация: 16.05.2011
Сообщений: 307

bes подправь скрипт,не работает
__________________
Я только учусь.Ногами просьба не бить
Ответить с цитированием
  #7 (permalink)  
Старый 16.05.2012, 10:27
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

В хроме работает, в IE нет (в этих двух браузерах дело не в myDiv вместо document.getElementById('myDiv') ).
IE почему-то не получает target в функции click(), почему не могу понять.
Ответить с цитированием
  #8 (permalink)  
Старый 16.05.2012, 10:39
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

bes,
function click(e){
  if(!e) e = event;
  var target = e.target || e.srcElement
.....
Ответить с цитированием
  #9 (permalink)  
Старый 16.05.2012, 11:13
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

melky, IE8 это не помогает
Ответить с цитированием
  #10 (permalink)  
Старый 16.05.2012, 11:31
Новичок на форуме
Отправить личное сообщение для chinga Посмотреть профиль Найти все сообщения от chinga
 
Регистрация: 15.05.2012
Сообщений: 5

ActiveX (да и вообще замечания от браузера) многие не продвинутые пользователи пугаются
вообще у меня идет связка дивов с select option (я их прячу и вывожу данные дивами). у одного option имеется selected, может к этому сделать привязку?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена таблицы стилей acvabalt Общие вопросы Javascript 12 21.07.2013 06:59
Смена стилей страницы при изменении размера окна браузера goooooch Javascript под браузер 6 19.11.2011 18:49
Смена css стилей stvord Элементы интерфейса 5 03.09.2011 21:10
Массив объектов или объект объектов vladlen Общие вопросы Javascript 19 30.10.2010 03:10
Быстрый поиск объектов Shasoft Общие вопросы Javascript 7 30.07.2009 05:28