Как работает этот скрипт..
Нашел здесь на форуме такой маленький скрипт:
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, время: 12:49. |