Javascript.RU

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

После переназначения className происходит нечто странное
Здрвствуйте, помогите, уже 3 часа сижу, жесть.

Имеется вот такой код:

function pagination(y, x)	{
	
	var nodeName = 'pd_pagination_' + y;
	
	var subNode = document.getElementById(nodeName);
	
	var nodes = subNode.getElementsByClassName('pd_pagination_p_cnt_focus');
	
		
	alert(nodes[0]); // здесь все норм выдет [object HTMLSpanElement]
	
	
	nodes[0].className = 'pd_pagination_p_cnt';
	
	
	alert(nodes[0]); // а здесь уже undefined
	
	
	
}


после nodes[0].className = 'pd_pagination_p_cnt';

после замены класса nodes[0] становится undefined и я его не могу дальше использовать


что-то я не понимаю что происходит


Вот это тоже не пашет:

<!DOCTYPE html>
<html>

<head>
</head>

<body>

<div id="my_div">
	<span id="my_span" class="one"></span></div>
<script type="text/javascript">

function pageInit() {
	
	var nodeName = 'my_div';
	
	var subNode = document.getElementById(nodeName);
	
	var nodes = subNode.getElementsByClassName('one');
	
	alert (nodes[0]); // все ОК
	
	nodes[0].className = 'two';
	
	
	alert (nodes[0]); // !!!!!Undefined!!!!
	
}

window.onload = pageInit;

</script>

</body>

</html>


не понимаю, почему теряется ссылка на ноду изза банального назначения стиля

Последний раз редактировалось Птицын, 23.02.2015 в 10:50.
Ответить с цитированием
  #2 (permalink)  
Старый 23.02.2015, 10:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

Птицын,
Цитата:
Результаты поиска getElementsBy* — живые! При изменении документа — изменяется и результат запроса.
http://learn.javascript.ru/searching...-getelementsby
Ответить с цитированием
  #3 (permalink)  
Старый 23.02.2015, 11:03
Новичок на форуме
Отправить личное сообщение для Птицын Посмотреть профиль Найти все сообщения от Птицын
 
Регистрация: 23.02.2015
Сообщений: 3

ага, я понял. а как тогда сохранить ссылку на объект для дальнейшего использования?
Ответить с цитированием
  #4 (permalink)  
Старый 23.02.2015, 11:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,071

Птицын,
NodeList преобразовать в нормальный массив
строка 20
nodes = [].slice.call(nodes)
Ответить с цитированием
  #5 (permalink)  
Старый 24.02.2015, 05:23
Новичок на форуме
Отправить личное сообщение для Птицын Посмотреть профиль Найти все сообщения от Птицын
 
Регистрация: 23.02.2015
Сообщений: 3

рони,

Разобрался, большое спасибо!
Ответить с цитированием
  #6 (permalink)  
Старый 24.02.2015, 05:27
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Птицын, не слушай его, он тебе хуету посоветовал. Вот нормальный вариант:
var nodes = subNode.querySelectorAll('.pd_pagination_p_cnt_focus');

Теперь твой код работает и в IE8, как бонус.
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



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

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