Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как узнать содержимое ссылки при наведении? if this.href.match()? (https://javascript.ru/forum/events/21262-kak-uznat-soderzhimoe-ssylki-pri-navedenii-if-href-match.html)

Kanzaki 02.09.2011 22:37

Как узнать содержимое ссылки при наведении? if this.href.match()?
 
Изучаю Javascript, есть такая функция:
function havejpg()
{
	if (document.getElementById('aHrefId').href.match(/jpg$/))
	{
		alert('Ссылка содержит буквы jpg'); 
	}
else
 	{
		alert('Ссылка не содержит буквы jpg'); 
 	}
}
И она работает, при наведении (onmousemove) на ссылку с id=aHrefId, а как мне сделать, чтобы работала при наведении на любую ссылку, даже если она без id?
if(this.href.match(/jpg$/))
не срабатывает.

Magneto 02.09.2011 22:58

var arayLink = document.getElementsByTagName('a'),
    totalLink = arayLink.length;

while (totalLink--) {
  arayLink[totalLink].addEventListener('mouseover', havejpg, false);
}

function havejpg(e)
{
	if (e.target.href.match(/jpg$/))
	{
		alert('Ссылка содержит буквы jpg'); 
	}
else
 	{
		alert('Ссылка не содержит буквы jpg'); 
 	}
}

Kanzaki 02.09.2011 23:10

Что-то не работает. Может теперь функция по другому вызывается?
Раньше я использовал
<td onmousemove="havejpg(0); return false;">

p.s. Браузер Firefox

Magneto 02.09.2011 23:12

Может стоит изучить основы javascript, и узнать способы добавления скриптов на страницу.

Kanzaki 02.09.2011 23:21

Я бы рад, но не успеваю пока, а работать надо именно в этой области сейчас.
Можно весь код включая <html> и <body> ?

melky 02.09.2011 23:29

Цитата:

Сообщение от Magneto (Сообщение 124437)
var arayLink = document.getElementsByTagName('a'),

:nono: ай-ай-ай

var a = /jpg$/,
    b, // current a
    c = 0,
    ie = !document.documentElement.addEventListener,
    handler = function(e){
        
        if (a.test( (event ? event.srcElement:e.target).href)) {
            alert("содержит");
        } else {
            alert("нет");
        }
    }

while ( b = document.links[c++] ) 
    ie ? b.attachEvent("onmouseover", handler ):b.addEventListener("mouseover",handler,false);

пример :
<a href="/mk" style="color:red">no jpg</a>
<a href="/lol.jpg" style="color:green">jpg</a>
<script>
var a = /jpg$/,
    b, // current a
    c = 0,
    ie = !document.documentElement.addEventListener,
    handler = function(e){
        
        if (a.test( (event ? event.srcElement:e.target).href)) {
            alert("содержит");
        } else {
            alert("нет");
        }
    }

while ( b = document.links[c++] ) 
    ie ? b.attachEvent("onmouseover", handler ):b.addEventListener("mouseover",handler,false);
</script>

Magneto 02.09.2011 23:30

<html>
<head>
<script type="text/javascript">
window.onload = function () {
  var arayLink = document.getElementsByTagName('a'),
      totalLink = arayLink.length;

  while (totalLink--) {
    arayLink[totalLink].addEventListener('mouseover', havejpg, false);
  }

  function havejpg (e) {
    if (e.target.href.match(/jpg$/)) {
      alert('Ссылка содержит буквы jpg'); 
    }
    else {
      alert('Ссылка не содержит буквы jpg'); 
    }
  }
}
</script>
</head>
<body>

<a href="img.jpg"> Ссылка 1 </a><br />
<a href="my.txt"> Ссылка 2 </a><br />
<a href="here.mp3"> Ссылка 3 </a><br />
<a href="you.jpg"> Ссылка 4 </a><br />
<a href="i.png"> Ссылка 5 </a><br />

</body>
</html>

Magneto 02.09.2011 23:32

Цитата:

Сообщение от melky
ай-ай-ай

В чем проблема?

melky 02.09.2011 23:39

Цитата:

Сообщение от Magneto (Сообщение 124449)
В чем проблема?

ничего такого, просто ты костыль написал

Magneto 02.09.2011 23:44

Цитата:

Сообщение от melky
ничего такого, просто ты костыль написал

Для доступа к элементу я использовал DOM, а ты BOM - ничего костыльного в своем примере я не вижу.

P.S. В Википедии можно прочитать что такое BOM


Часовой пояс GMT +3, время: 18:01.