Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.12.2011, 00:15
Аватар для BaVa
Аспирант
Отправить личное сообщение для BaVa Посмотреть профиль Найти все сообщения от BaVa
 
Регистрация: 16.11.2011
Сообщений: 60

div, изменение цвета при клике на div элемент
Помогите, нужен код html страницы в которой с помощью JavaScript изменяется цвет div блока и отображается сколько на данный момент измененных div блоков.
то есть можно опять нажать на ранее измененный div блок и к нему вернется прежний цвет и счетчик отминусуется на один...

помогите пожалуйста... нужно в универ, проходили небольшую практику. мы яваскрипт еще не учили но мне дали такое задание потому что знаю другие языки средненько(c++,c#), а время для самостоятельного решения не хватает...

ну вот я нарисовал прототип html страницы для лучшего восприятия, что там должно происходить.

где n это количество измененных div блоков.
Ответить с цитированием
  #2 (permalink)  
Старый 19.12.2011, 01:01
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

<style>
* {margin:0;padding:0}
.green {background-color:#77FC79}
.red {background-color:#FA4B57}
div.block {
    margin: 30px;
    border:1px #2E2E2E solid;
    text-align:center;
    padding:10px 0px;
    width:100px;
}
.left {
    position:absolute;
    left: 150px;
}
</style>

<div class="left">
    Clicked : <b id="res">0</b>
</div>


<div class="block red">hello</div>
<div class="block red">hello</div>
<div class="block red">hello</div>

<script>
window.onload = function(){
	var a = document.getElementById("res");
    document.body.onclick = function(e){
        var el = e ? e.target:event.srcElement;
		var cls = el.className;
		if(!~cls.indexOf("block")) return;
        if(~cls.indexOf("green")) {
        	el.className = "block red";
        	a.innerHTML--;
        } else {
        	el.className = "block green";
        	a.innerHTML++;
        }		
    }
}
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 19.12.2011, 01:17
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Деньги на бочку!
<style>
#main div {padding:15px;margin:5px; border:1px solid #000;background:#f00}
#main .selected{background:#afa}
</style>

<div id="main">
  <div>Текст</div>
  <div>Текст</div>
  <div>Текст</div>
  Выделено объектов:
</div>

<script>
(function(){
  var m=document.getElementById('main'),
      i=0,
      n=m.appendChild(document.createTextNode('n'));
  m.onclick=function(e){
    var t=e?e.target:window.event.srcElement;
    if(t!=m) t.className=t.className?i--&&'':++i&&'selected';
    n.data=i;
  }
}())
</script>


melky, ны не сечёшь темы, на такие запросы надо придумывать как можно более заковыристый код.))
__________________
29375, 35

Последний раз редактировалось Aetae, 19.12.2011 в 01:20.
Ответить с цитированием
  #4 (permalink)  
Старый 19.12.2011, 09:12
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

if(t!=m) t.className=t.className?i--&&'':++i&&'selected';

запятая вместо && красивее смотрится.
if(t!=m) t.className=t.className?i--,'':++i,'selected';


Сообщение от Aetae Посмотреть сообщение
melky, ны не сечёшь темы, на такие запросы надо придумывать как можно более заковыристый код.))
я написал просто и понятно. даже без функций add/remove+class
Ответить с цитированием
  #5 (permalink)  
Старый 19.12.2011, 12:07
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

версия с использованием jquery, может быть не оптимально,
но по-моему нагляднее

<style>
#main div {padding:15px;margin:5px; border:1px solid #000;background:#f00}
#main .selected{background:#afa}
</style>
 
<div id="main">
  <div>Текст</div>
  <div>Текст</div>
  <div>Текст</div>
  Выделено объектов: <span>0</span>
</div>
 
<script src='http://code.jquery.com/jquery-git.js'></script>
<script>
$(function(){
  var el = $('#main > div'), // куда кликаем
      counter = $('#main > span'); // где отображаем число выделенных

  el.click(function (e) {
      $(this).toggleClass('selected'); // меняем класс
      var num = el.filter('.selected').length; // смотрим сколько выделено
      counter.text(num); // меняем текст
  });
});
</script>
Ответить с цитированием
  #6 (permalink)  
Старый 19.12.2011, 17:03
Аватар для BaVa
Аспирант
Отправить личное сообщение для BaVa Посмотреть профиль Найти все сообщения от BaVa
 
Регистрация: 16.11.2011
Сообщений: 60

АААААА ребята большое спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При клике ссылки, открыть DIV блок, и при клике ещё раз, закрыть его Simon Общие вопросы Javascript 59 28.05.2017 17:31
Событие при клике на любой элемент кроме одного shaltay jQuery 1 29.11.2011 19:27
Отладка. При клике на элемент найти функцию-обработчик в коде romangaag Events/DOM/Window 3 24.10.2010 03:09
Изменение текстов при клике insomnia Элементы интерфейса 6 15.04.2010 18:50
Закрыть элемент при клике вне его masterm Общие вопросы Javascript 3 31.07.2009 11:27