Как работает этот скрипт..
Нашел здесь на форуме такой маленький скрипт:
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 не должны быть равны, хотя бы по количеству символов. В общем, каким образом происходит сравнение? Спасибо за внимание. |
Цитата:
Цитата:
В b[i].href может быть любой URL... Как и в location.href. Цитата:
|
Цитата:
То есть сравниваться будет "page.html" и "http://site.ru/page.html". Как они могут быть равны? Цитата:
p.s. Если что, я не страдаю ерундой, просто мне важно понять логику работы скрипта. |
Николай II, а кто говорил, что они равны? :blink:
|
Цитата:
То есть меню имеет такой вид как я указал выше и если зайти на страницу, адрес("http://site.ru/page.html) которой совпадает с ссылкой(page.html) в меню, то она(ссылка) меняет свой стиль. Значит они равны? |
нет, "page.html" != "http://site.ru/page.html"! Но кто сказал, что в href ссылки хранится именно page.html?
<a href="page.html">Page</a> <script> alert(document.querySelector("a").href) ; </script> |
Цитата:
Или при сравнении к ссылке автоматически добавляется домен и протокол? |
Цитата:
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';} } |
Все, понял. Просто я думал, что как прописана ссылка в меню, так скрипт буквально ее и сравнивает.
Благодарю. |
Банальное непонимание что атрибут и свойство - не одно и то же.
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-коде. Атрибуты могут хранить только строковые значения. Свойства же часто отражают значения атрибутов, но разные свойства работают по-разному. |
Часовой пояс GMT +3, время: 00:36. |