Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 19.08.2012, 15:54
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

wrapper_.children[3] //undefined, а не null
alert(wrapper_.children[3] === null);//возвращает false

alert([ 
undefined == null,
undefined ===  null
])
__________________
29375, 35
Ответить с цитированием
  #22 (permalink)  
Старый 19.08.2012, 16:26
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от Aetae Посмотреть сообщение
wrapper_.children[3] //undefined, а не null
alert(wrapper_.children[3] === null);//возвращает false

alert([ 
undefined == null,
undefined ===  null
])
хм.. понял , был не прав.
а можно ссылочку прочитать про то почему они равны, потому что помню что undefined == null, а почему не могу вспомнить
Ответить с цитированием
  #23 (permalink)  
Старый 19.08.2012, 16:32
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Потому же почему и
alert(0==false)
и
alert('' == 0)
. Приведение типов.)
__________________
29375, 35
Ответить с цитированием
  #24 (permalink)  
Старый 19.08.2012, 16:36
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от Aetae Посмотреть сообщение
Потому же почему и
alert(0==false)
и
alert('' == 0)
. Приведение типов.)
ну так это понятно, false при переводе в число == 0 и со строкой тоже.
Ну если меня память не подводит то в учебнике было написано что они сравниваются "как есть"
Ответить с цитированием
  #25 (permalink)  
Старый 19.08.2012, 21:17
Интересующийся
Отправить личное сообщение для Elve Посмотреть профиль Найти все сообщения от Elve
 
Регистрация: 11.06.2012
Сообщений: 25

Спасибо за помощь
Сбасибо Aetae и cyber за то, что помогли новичку разобраться в работе с DOM деревом. Итак теперь код, который работает для тех, кто возможно столкнется с подобной задачей
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Документ без названия</title>
</head>
 
<body>
<div id="content-wrap">
<!--text1-->
<div>1</div>
<div>2</div>
<!--text 2 -->
<div>3</div>
 
</div>
<script> 
       function prev( el ){
  		while(el=el.previousSibling) if(el.nodeType === 1) break;
  		return el
	}
        var wrapper_ = document.getElementById('content-wrap');
	var elem =  wrapper_.children[2];
	var divs = wrapper_.getElementsByTagName('div');
 
	
	alert('до обработки ='+wrapper_.childNodes.length+" после="+remove_TextNode(wrapper_.childNodes).length);
	console.log(wrapper_.childNodes);
	wrapper_n = remove_TextNode(wrapper_.childNodes);

    
    function remove_TextNode (array) {
    
      var leng = array.length;
      var elemArray, resultArray = [];
      
      for (var i = 0; i < leng;i++) {
      
       elemArray = array[i];
     
        if (elemArray.nodeType != 1) continue;
        
        
        resultArray.push(elemArray);
      }
    
     return resultArray;
    }
	after_main =  wrapper_n[2]
	wrapper_.insertBefore(elem, wrapper_n[1] || null);
</script>
</body>
</html>
И П.С. К этому счастью: function prev( el ) - функция замена previousSibiling для работы кроссбраузерно
function remove_TextNode (array) - для работы с массивом вложенных элементов в том случае, если в коде есть комментарии ( Коменты ИЕ видит как отдельный элемент и поэтому работа под ИЕ и под другими браузерами будет сильно отличаться.)
children в ие ниже 9 версии вроде работает( лично у меня работает в 7 и 8 версии)
Ответить с цитированием
  #26 (permalink)  
Старый 19.08.2012, 21:42
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

хочу уточнить что функции remove_TextNode отсеивает все кроме обьектов (тэгов), т.е удаляет комментарии , текстовые узлы ...
Ответить с цитированием
  #27 (permalink)  
Старый 20.03.2015, 16:58
Новичок на форуме
Отправить личное сообщение для Dargonaks Посмотреть профиль Найти все сообщения от Dargonaks
 
Регистрация: 20.03.2015
Сообщений: 3

Всем доброго время, подскажите пожалуйста как заставить работать такую конструкцию
<script type="text/javascript">
window.onload = afterLoad;
function afterLoad() {
	var maina = document.getElementsByClassName('top_menu_test'); // находим узел
	var newAttr1 = document.createAttribute('rel'); // создаем атрибут
	newAttr1.value = 'nofollow';  // устанавливаем значение
	maina.setAttributeNode(newAttr1);  // привязываем атрибут
};

</script>
<a class="top_menu_test" href="http://mail.ru">http://mail.ru</a>
Ответить с цитированием
  #28 (permalink)  
Старый 20.03.2015, 17:43
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

var maina = document.getElement*!*s*/!*ByClassName('top_menu_test')*!*[0]*/!*;
Elements - множественное число, результат NodeList(массивоподобный объект) и если элемент с таким классом один - значит он там нулевой.

А вообще лучше не использовать getElementsByClassName (ибо не работает в ie8), в вашем случае отлично подойдёт:
var maina = document.querySelector('.top_menu_test');
__________________
29375, 35
Ответить с цитированием
  #29 (permalink)  
Старый 21.03.2015, 22:45
Новичок на форуме
Отправить личное сообщение для Dargonaks Посмотреть профиль Найти все сообщения от Dargonaks
 
Регистрация: 20.03.2015
Сообщений: 3

большое спасибо добрый человек
Ответить с цитированием
  #30 (permalink)  
Старый 23.03.2015, 09:45
Новичок на форуме
Отправить личное сообщение для Dargonaks Посмотреть профиль Найти все сообщения от Dargonaks
 
Регистрация: 20.03.2015
Сообщений: 3

а на будующее не могли бы подсказать пример для такого случая:
<script type="text/javascript">
window.onload = afterLoad;
function afterLoad() {
	var maina = document.querySelectorAll('.top_menu_test'); // находим узел
	var newAttr1 = document.createAttribute('rel'); // создаем атрибут
	newAttr1.value = 'nofollow';  // устанавливаем значение
	maina.setAttributeNode(newAttr1);  // привязываем атрибут
};

</script>


<a class="top_menu_test" href="http://mail.ru">http://mail.ru</a><br>
<a class="top_menu_test" href="http://yandex.ru">http://yandex.ru</a><br>
<a class="top_menu_test" href="http://google.ru">http://google.ru</a><br>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
теги в выделенном фрагменте woojin Events/DOM/Window 48 15.08.2012 19:13
Выбор несуществующего элемента nematod Элементы интерфейса 1 12.03.2012 02:39
"Путь" до нужного элемента Pixelus jQuery 2 06.03.2012 21:34
Выбор нужного элемента из загружаемого файла на ajax+jquery/ 0931454574 AJAX и COMET 4 01.04.2011 14:37
Поиск нужного скрипта (выбор цвета) Djumpen Общие вопросы Javascript 1 02.04.2010 08:23