2012-03-16 3 views
2

Я нашел еще одно подобное квесты, но почти все для продвинутых вещей, таких как разработка Android. Думаю, мой вопрос прост. У меня есть эти два кода:JavaScript onClick работает только после второго щелчка

function toggle(d) 
{ 
    var o=document.getElementById(d); 
    o.style.display=(o.style.display=='none')?'block':'none'; 
} 

И в другом файле, я получил, что:

<a href="javascript:;" onmouseover="toggle('maisinfo');">More Info </a> 

Когда я нажимаю на получил Mouseover (второй код), он просто работает после второй попытки.

Кто-нибудь знает, где проблема?

найд .: Первый код находится в header.php, а второй на single.php (WORDPRESS)

+0

вы также можете разместить фрагмент html с идентификатором maisinfo? – stivlo

ответ

3

В первый раз d задан CSS; JavaScript не видит этого свойства стиля (см. Get the Rendered Style). Сначала он видит o.style.display === "" (это не «нет»). Следовательно, первый клик устанавливает его равным нулю, а второй устанавливает его блокировку.

Изменить его:

o.style.display = (o.style.display === 'block') ? 'none':'block'; 
+0

Спасибо. Теперь просто отлично! :) – euDennis

1

, потому что в первый раз свойство дисплей не установлен поэтому он не равен «нет»

0

Ну, нет ничего плохого с кодом выше. Возможно, что-то связано с вашим объявлением стиля, например, чтобы оно блокировалось в начале, которое вам может не понадобиться. Вот простой JSFiddle, который я сделал для тестирования вашего кода: http://jsfiddle.net/77DMd/1/

Надеюсь, это поможет.

+0

Кроме того, вы можете проверить свою консоль на наличие каких-либо предупреждений или ошибок. Определяется ли функция переключения перед ее использованием и т. Д. – Mutahhir

Смежные вопросы