Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.03.2011, 21:26
Новичок на форуме
Отправить личное сообщение для vavich Посмотреть профиль Найти все сообщения от vavich
 
Регистрация: 30.03.2011
Сообщений: 4

Поиск элемента по классу
не спешите критиковать, только учусь

есть вот такой HTML c двумя классами class="con"
<div class="con">text</div>
<div id="tro">
       <div class="co">
            <div class="con">text1</div>
            <div class="foo"></div>
        </div>
</div>


а нужно второму элементу div с классом class="con" добавит еще один элемент

вот пробовал через дочерные элементы
var elems = document.getElementById('tro');
  var elems_child = elems.childNodes;

  for (var key in elems_child)
  {
    var val = some_array[key];
    if(val.className == 'con')
    {
       var select = document.createElement('div');

       val.appendChild(select);
    }
  }


но что то не получаеться так, подскажите правильный путь
Ответить с цитированием
  #2 (permalink)  
Старый 30.03.2011, 21:38
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Во первых ошибка у тя тут:
var val = some_array[key];

Массив с элементами у тебя же elems_child.

Во вторых:
var elems_child = elems.childNodes;

В твоем случае надо:
var elems_child = elems.childNodes[1];


window.onload = function() {
	var elems = document.getElementById('tro');
	var elems_child = elems.childNodes[1];
 
	for (var key in elems_child) {
		var val = elems_child[key];
		if(val.className == 'con') {
			var select = document.createElement('div');
			val.appendChild(select);
		}
	}
}
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай

Последний раз редактировалось walik, 30.03.2011 в 21:43.
Ответить с цитированием
  #3 (permalink)  
Старый 30.03.2011, 22:09
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

walik, for-in в конкретном случае зло!
Ответить с цитированием
  #4 (permalink)  
Старый 30.03.2011, 22:15
Новичок на форуме
Отправить личное сообщение для vavich Посмотреть профиль Найти все сообщения от vavich
 
Регистрация: 30.03.2011
Сообщений: 4

отладчик пишет ошибку

val is null

а как можно проверить нашло ли совпадение if(val.className == 'con')
пытался в оператор вставить alert('1'); не чего не получилось не сработало
Ответить с цитированием
  #5 (permalink)  
Старый 30.03.2011, 22:52
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

<script>
window.onload = function() {
    var elems = document.getElementById('tro');
    var elems_child = elems.childNodes[1];
  
    for (var key in elems_child) {
        var val = elems_child[key];
        if(val.className == 'con') {
            var select = document.createElement('div');
            select.innerHTML = 'added div';
            val.appendChild(select);
        }
    }
}
</script>
<div class="con">text</div>
<div id="tro">
       <div class="co">
            <div class="con">text1</div>
            <div class="foo"></div>
        </div>
</div>

Вот все же работает ?



monolithed,
А почему зло ? И что следует в данном случае использовать ?
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #6 (permalink)  
Старый 30.03.2011, 23:10
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от walik
А почему зло ? И что следует в данном случае использовать ?
во-первых, в конкретном случае возможно обойтись и getElelementsByTagName(), во-вторых, for-in самый прожорливый и медленный из всех циклов (в конкретном случае можно заменить на обратный while), в остальном читать тут.
Ответить с цитированием
  #7 (permalink)  
Старый 02.04.2011, 18:40
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от walik
А почему зло ?
for-in не гарантирует порядок перебора, и не гарантирует, что будут перебраны только числовые свойства.
Ответить с цитированием
  #8 (permalink)  
Старый 01.10.2013, 10:59
Профессор
Отправить личное сообщение для sotik Посмотреть профиль Найти все сообщения от sotik
 
Регистрация: 14.09.2012
Сообщений: 158

Есть код:
document.onclick = function( e ){
class = e.target.className;
if(class=="strun")alert("хороший");
}

<div class="strun">
мой текст
</div
Нужно,чтоб скрипт не щупал все подряд,а выдавал сообщение только при клике на элементе с заданным классом.Вот так как у меня не выходит,а как правильно?
Ответить с цитированием
  #9 (permalink)  
Старый 01.10.2013, 11:15
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

class - это зарезервированное слово, его в качестве переменных нельзя использовать.
<div class="strun">мой текст</div>
<div class="strun2">мой текст2</div>
<script>
document.onclick = function( e ){
	if(e.target.className == "strun") alert("хороший");
}
</script>

Но вообще, правильнее было бы вешать онклики сразу на нужные классы, а не на весь документ.
Ответить с цитированием
  #10 (permalink)  
Старый 01.10.2013, 11:34
Профессор
Отправить личное сообщение для sotik Посмотреть профиль Найти все сообщения от sotik
 
Регистрация: 14.09.2012
Сообщений: 158

Спасибо.Не знал что эту переменную нельзя использовать...
А почему вот так работает:
<div class="strun">мой текст</div>
А вот так нет?
<div class="strun">
<p>1 струна</p>
</div>
Как правильно?
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск самого длинного элемента Randomizer jQuery 9 14.03.2011 13:13
поиск элемента по критериям Wagner Events/DOM/Window 15 03.03.2010 14:14
Поиск элемента в IE !? Andrei Общие вопросы Javascript 3 20.11.2009 13:03
Поиск элемента по id coryphaeus Events/DOM/Window 16 17.11.2009 16:35
Поиск элемента по куску его Id gregOlsener Events/DOM/Window 1 25.08.2008 21:04