Javascript.RU

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

Как работает этот скрипт..
Нашел здесь на форуме такой маленький скрипт:
var a =  document.getElementById("menu");
var b =  a.getElementsByTagName("a");
var THref = location.href;
leng = b.length
for(var i=0; i<leng; i++){
	if(b[i].href==THref){b[i].className='activ';}
}

Вроде бы все понятно, кроме одного момента. К примеру в переменную THref помещается адрес страницы "http://site.ru/page.html", а в переменную b ссылка из меню, имеющая вид "page.html"
Получается, что бы в условии получилось true достаточно частичного совпадения по "page.html"? Ведь по идее b[i].href==THref не должны быть равны, хотя бы по количеству символов.
В общем, каким образом происходит сравнение?

Спасибо за внимание.
Ответить с цитированием
  #2 (permalink)  
Старый 07.06.2013, 10:58
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от Николай II
а в переменную b ссылка из меню
В переменной b не ссылка. Там все теги A...

Сообщение от Николай II
имеющая вид "page.html"
Это кто такое сказал?
В b[i].href может быть любой URL... Как и в location.href.

Сообщение от Николай II
В общем, каким образом происходит сравнение?
Если URLы равны - условие выполнится.
Ответить с цитированием
  #3 (permalink)  
Старый 07.06.2013, 11:54
Интересующийся
Отправить личное сообщение для Николай II Посмотреть профиль Найти все сообщения от Николай II
 
Регистрация: 05.06.2013
Сообщений: 11

Цитата:
Это кто такое сказал?
К примеру меню имеет такой вид <li><a href="page.html"></a></li>
То есть сравниваться будет "page.html" и "http://site.ru/page.html". Как они могут быть равны?

Цитата:
В b[i].href может быть любой URL... Как и в location.href.
Я понимаю, просто хотел на конкретном примере сравнить.

p.s. Если что, я не страдаю ерундой, просто мне важно понять логику работы скрипта.

Последний раз редактировалось Николай II, 07.06.2013 в 12:00.
Ответить с цитированием
  #4 (permalink)  
Старый 07.06.2013, 12:00
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

Николай II, а кто говорил, что они равны?
__________________
★ ²º¹³ ☆
Ответить с цитированием
  #5 (permalink)  
Старый 07.06.2013, 12:06
Интересующийся
Отправить личное сообщение для Николай II Посмотреть профиль Найти все сообщения от Николай II
 
Регистрация: 05.06.2013
Сообщений: 11

Цитата:
Николай II, а кто говорил, что они равны?
Но ведь этот скрип у меня на сайте выполняется...
То есть меню имеет такой вид как я указал выше и если зайти на страницу, адрес("http://site.ru/page.html) которой совпадает с ссылкой(page.html) в меню, то она(ссылка) меняет свой стиль. Значит они равны?

Последний раз редактировалось Николай II, 07.06.2013 в 12:09.
Ответить с цитированием
  #6 (permalink)  
Старый 07.06.2013, 12:23
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

нет, "page.html" != "http://site.ru/page.html"! Но кто сказал, что в href ссылки хранится именно page.html?
<a href="page.html">Page</a>
<script>
alert(document.querySelector("a").href) ;
</script>
__________________
★ ²º¹³ ☆
Ответить с цитированием
  #7 (permalink)  
Старый 07.06.2013, 12:43
Интересующийся
Отправить личное сообщение для Николай II Посмотреть профиль Найти все сообщения от Николай II
 
Регистрация: 05.06.2013
Сообщений: 11

Цитата:
Но кто сказал, что в href ссылки хранится именно page.html?
Но ведь пункты меню имеют вид <li><a href="page.html"></a></li>, без http и site.ru
Или при сравнении к ссылке автоматически добавляется домен и протокол?
Ответить с цитированием
  #8 (permalink)  
Старый 07.06.2013, 13:16
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от Николай II
мне важно понять логику работы скрипта
Таки смотри...

var a =  document.getElementById("menu");
var b =  a.getElementsByTagName("a");
var THref = location.href;
leng = b.length
for(var i=0; i<leng; i++){
	alert(b[i].href+' и '+THref);
	if(b[i].href==THref){b[i].className='activ';}
}
Ответить с цитированием
  #9 (permalink)  
Старый 07.06.2013, 13:42
Интересующийся
Отправить личное сообщение для Николай II Посмотреть профиль Найти все сообщения от Николай II
 
Регистрация: 05.06.2013
Сообщений: 11

Все, понял. Просто я думал, что как прописана ссылка в меню, так скрипт буквально ее и сравнивает.

Благодарю.
Ответить с цитированием
  #10 (permalink)  
Старый 07.06.2013, 15:28
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Банальное непонимание что атрибут и свойство - не одно и то же.

var a = document.createElement('a');
a.href = 'page.html';

alert(a.href);
alert(a.getAttribute('href'));


другой пример

var a = document.createElement('a');
a.onclick = function() { alert('свойство') };

alert(a.onclick);
alert(a.getAttribute('onclick'));


Атрибуты используются как правило для задания начального значения в HTML-коде. Атрибуты могут хранить только строковые значения.

Свойства же часто отражают значения атрибутов, но разные свойства работают по-разному.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите пожалуйста как мне можно изменить этот скрипт Niko jQuery 0 13.04.2013 14:47
Не работает скрипт с setTimeout (гляньте опытным глазом) пжл. Benos Firefox/Mozilla 4 24.03.2012 20:18
Скрипт перестал работать в новых версиях firefox, Opera и Chrome, а в IE работает polbear Javascript под браузер 3 30.06.2011 09:34
Как можно сократить (и можно ли) этот скрипт (см. внутри)? Hyuga_Nia Общие вопросы Javascript 28 20.01.2011 21:48
А как зделать скрипт, чтобы например скрипт 1 заменялся скриптом 2? yura371 Общие вопросы Javascript 3 06.01.2009 22:40