div, изменение цвета при клике на div элемент
Помогите, нужен код html страницы в которой с помощью JavaScript изменяется цвет div блока и отображается сколько на данный момент измененных div блоков.
то есть можно опять нажать на ранее измененный div блок и к нему вернется прежний цвет и счетчик отминусуется на один... помогите пожалуйста... нужно в универ, проходили небольшую практику. мы яваскрипт еще не учили но мне дали такое задание потому что знаю другие языки средненько(c++,c#), а время для самостоятельного решения не хватает... ![]() ну вот я нарисовал прототип html страницы для лучшего восприятия, что там должно происходить. где n это количество измененных div блоков. |
<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> |
Деньги на бочку!
<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, ны не сечёшь темы, на такие запросы надо придумывать как можно более заковыристый код.)) |
if(t!=m) t.className=t.className?i--&&'':++i&&'selected'; запятая вместо && красивее смотрится. if(t!=m) t.className=t.className?i--,'':++i,'selected'; Цитата:
|
версия с использованием 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> |
АААААА ребята большое спасибо:thanks:
|
Часовой пояс GMT +3, время: 14:33. |