Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 15.11.2009, 19:27
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Temchik
document.getElementsByTagName("head")[0]
document.getElementsByTagName("head")[0] не вернёт HEAD, т.к. document указывает на body (вроде как) и ищет там тег с именем head и не находит. Я же приводил пример, как можно получить HEAD:
document.documentElement.getElementsByTagName('HEAD')[0].

Дальше.
Вместо setAttribute используй свойства узлов:
link.href - путь,
link.rel - тип.

Советую почитать документацию DOM.

Последний раз редактировалось B~Vladi, 15.11.2009 в 19:33.
Ответить с цитированием
  #12 (permalink)  
Старый 15.11.2009, 19:36
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

На будущее:
свойство документа (document) documentElement указывает на корень этого документа - html. В нём и надо искать head, а в нём уже и ссылки на стили. Ещё могут быть линки и в body. Там их можно найти в document.body.
Ответить с цитированием
  #13 (permalink)  
Старый 15.11.2009, 19:47
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от B~Vladi
document.getElementsByTagName("head")[0] не вернёт HEAD, т.к. document указывает на body (вроде как) и ищет там тег с именем head и не находит.
Чо? Никуда он не указывает, document.getElementsByTagName("head") найдет <head>.


Temchik, вы break с return не перепутали?

Последний раз редактировалось Octane, 15.11.2009 в 19:56.
Ответить с цитированием
  #14 (permalink)  
Старый 15.11.2009, 19:55
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

document круче чем html, html в нем находится. Раньше я этого не знал и вот эта функция:
parent: function(self, nodeName) {
	if (self) {
		if (nodeName) {
			nodeName = nodeName.toLowerCase();
			while ((self = self.parentNode) && self.nodeName.toLowerCase() != nodeName);
			return $(self);
		}
		return $(self.parentNode);
	}
}


только написанная через tagName, а не через nodeName, в определенных ситуациях вызывала ошибку.
Ответить с цитированием
  #15 (permalink)  
Старый 15.11.2009, 20:01
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Riim, я из твоей функции ничего не понял, можно на чистом JS?!
Octane, document - это документ и он не обязан указывать на своих детей. Есть свойство документа: documentElement - корень документа, от которого и нужно отталкиваться в поиске.
Ответить с цитированием
  #16 (permalink)  
Старый 15.11.2009, 20:04
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

B~Vladi, для чего тогда у document есть getElementsByTagName и другие методы для поиска элементов?
Ответить с цитированием
  #17 (permalink)  
Старый 15.11.2009, 20:09
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Octane
B~Vladi, для чего тогда у document есть getElementsByTagName и другие методы для поиска элементов?
Octane, у document кроме как getElementsByName больше ничего нет, что касается поиска элементов. Реализация сама решит какие свойства иметь, для всего остального есть documentElement.

PS: document это не <HTML>...
Ответить с цитированием
  #18 (permalink)  
Старый 15.11.2009, 20:24
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Ага. Ну чтобы не фантазировать, что кому должен, и какая реализация, что решает, полезли в W3C читать доки:
Сообщение от W3C
The Document interface represents the entire HTML or XML document. Conceptually, it is the root of the document tree, and provides the primary access to the document's data. Interface Document
Здесь сказано, что document является root-элементом дерева. Смотрим там же дальше интерфейс:
Сообщение от W3C
interface Document : Node {
…
  NodeList           getElementsByTagName(in DOMString tagname);
…
};
О_о getElementsByTagName есть у document по стандарту, листаем дальше:
Сообщение от W3C
getElementsByTagName
Returns a NodeList of all the Elements with a given tag name in the order in which they are encountered in a preorder traversal of the Document tree.
Говорится про Document tree, ничего про отдельную ветку с <body> не сказано.

Так почему надо искать <head> с помощью document.documentElement.getElementsByTagName("hea d"), а не document.getElementsByTagName("head")?
Ответить с цитированием
  #19 (permalink)  
Старый 15.11.2009, 20:24
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от B~Vladi
Riim, я из твоей функции ничего не понял, можно на чистом JS?!
так $ убрать и будет на чистом js. Я просто помню ты давно показывал свою такую же функцию (там еще с рекурсией), и у тебя там тоже через tagName было, вот я и показываю, что бы ты у себя проверил, а то вдруг тоже ошибка. Ошибка в том, что если из родительских тегов никто не подходит, то цикл доходит до document у которого tagName == null, ну и toLowerCase к null вызовет ошибку.

Последний раз редактировалось Riim, 15.11.2009 в 21:01.
Ответить с цитированием
  #20 (permalink)  
Старый 15.11.2009, 20:30
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

И еще вот:
alert(document.childNodes[0].nodeName)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ссылка на JS в head и в body, Есть разница? rolph (X)HTML/CSS 9 03.11.2013 23:50