Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   почему не работает ссылка (https://javascript.ru/forum/events/51956-pochemu-ne-rabotaet-ssylka.html)

demo 27.11.2014 13:04

почему не работает ссылка
 
Помогите разобраться, почему после добавления ссылки в документ (contr.innerHTML = <a ...>...</a>) через clearInterval() ссылка отображается правильно (в т.ч в строке состояния браузера), но переход по ней не осуществляется. В чем прикол? Что неправильно?
Вот код:
<html>
<head>
<script type="text/javascript">
function changeText() {
if(contr.innerHTML == "АКЦИЯ")
{
contr.innerHTML = "<a href='http://yandex.ru'>ПРИВЕТ</a>";
}
else
{
contr.innerHTML = "АКЦИЯ";
}
}
function stopText(){
clearInterval(idInterval);
contr.innerHTML = "<a href='http://yandex.ru'>ПРИВЕТ Я не работаю</a>";
}
</script>
</head>
<body>
<div id="contr" style="position:relative; top:150px; left:150px; width:150px; height:150px; background:yellow;"
 onmouseover="stopText();">
АКЦИЯ
</div>
<script>
var idInterval=setInterval("changeText()",1300);
</script>
</body>
</html>

рони 27.11.2014 13:39

Цитата:

Сообщение от demo
id=delivery'>ПРИВЕТ</a>";

???
:blink: Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

рони 27.11.2014 14:02

demo,
function stopText(){
 *!* contr.onmouseover=null;*/!*
 clearInterval(idInterval);
 contr.innerHTML = "<a href='http://yandex.ru'>ПРИВЕТ Я не работаю</a>";
 }

kostyanet 29.11.2014 14:52

Бредовая реализация. Обычно просто скрывают одно - другое открывают, затем наоборот, а не перезаписывают хтмл.

krutoy 29.11.2014 22:14

Цитата:

Сообщение от demo
В чем прикол?

прикол в том, что по событию оnmouseover функция stopText постояннно вызывается и блокирует поток, поэтому браузер не может обработать клик, пока мышь наведена на объект. Помимо решения, предложенного Рони, возможно еще использование события onmousemove вместо onmouseover, в расчете на то, что когда пользователь кликает мышью, он ее перестает перемещать. Кроме того, можно поизвращаться с костылями из seTimeout


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