<div id="block$ID$"> // Что то ещё... <div class="class1"></div> // Что то ещё... <div class="myclass" style="width:100px;height:100px; background-color:#333333;"></div> // Что то ещё... </div> <br /> <div id="block$ID$"> // Что то ещё... <div class="class2"></div> // Что то ещё... <div class="myclass" style="width:100px;height:100px; background-color:#333333;"></div> // Что то ещё... </div>
Подскажите - как реализовать такое условие: Если в блоке с id block$ID$ есть див с классом class1 то див с классом myclass в этом же блоке меняет класс на myclass2, а если есть див с классом class2 то див с классом myclass меняет класс на myclass3. А то всю голову уже сломал.
Если можно то jQ + аналог на чистом js.
Сообщение отредактировал lewonchik - Среда, 21.12.2011, 20:38
ты обращаешься к потомкам согласно их очерёдности в коде, нужно без жёсткой привязки к их очерёдности т.к. варьируется количество строк в коде. Т.е. выше и/или ниже дива с классом class1, а так же дива с классом myclass может быть ещё несколько строк кода.
Сообщение отредактировал lewonchik - Среда, 21.12.2011, 18:34
<script> if (document.getElementById('block$ID$').getElementsByClassName('class1')) document.getElementById('block$ID$').getElementByClassName('myclass').className='myclass2'; else document.getElementById('block$ID$').getElementByClassName('myclass').className='myclass3'; </script>
или
Code
<script> document.getElementById('block$ID$').getElementByClassName('myclass').className=(document.getElementById('block$ID$').getElementsByClassName ('class1')?'myclass2':'myclass3') //не уверен, работает ли </script>
Дело в том что блоков с id block$ID$ на странице 10 штук, нужно чтобы скрипт выполнял условие в каждом блоке, а не тек как сейчас - нашёл первое совпадение и применил условие ко всем дивам с классом myclass без исключения.
lewonchik, проблема в том, что компонентов с одинаковым классом может быть множество, а компонентов с одним id быть не может, т.к. их просто невозможно обрабатывать будет. если заменить id на class, тоесть <div id="block$ID$"> на <div class="block$ID$">, тогда можно будет обработать все контейнеры цыклом:
Code
<script> for (var i=0;i<document.getElementsByClassName('block$ID$').length;i++) document.getElementsByClassName('block$ID$')[i].getElementsByClassName('myclass')[0].className=(document.getElementsByClassName('block$ID$')[i].getElementsByClassName('class1')?'myclass2':'myclass3') </script>
Сообщение отредактировал Crasher - Четверг, 22.12.2011, 01:49