2013-07-21 5 views
-2

Я хочу, чтобы при нажатии на ссылку выполнялась функция javascript.Javascript onclick не работает

Вот JavaScript:

<script type="text/javascript"> 
     function changeStyle() { 
      var header = document.getElementbyId("header"); 
      var container = document.getElementbyId("container"); 

      header.style.display = "block"; 
      container.style.marginLeft = "auto"; 
     } 
    </script> 

Вот HTML:

<a href="javascript:changeStyle()"><span>&#9776</span> MENU</a> 

В настоящее время, когда нажата ссылка, ничего не происходит. Как я могу сделать так, чтобы javascript действительно менял стили, когда я этого хочу?

EDIT:

Вот новый код:

Javascript:

$('#selector').click(function() { 
    var header = document.getElementById("header"); 
     var container = document.getElementById("container"); 
    header.style.display = "block"; 
    container.style.marginLeft = "auto"; 
}) 

HTML:

<a href="#" id="selector"><span>&#9776</span> MENU</a> 
+4

Этот вопрос будет вне темы, потому что есть без вопросов здесь. – PeeHaa

+1

Читайте о ненавязчивом JavaScript. – str

+0

Есть что-то * по своей сути * неправильно. Вы должны избегать наличия переменных (например, функции) в глобальном пространстве имен. Добавьте вместо этого [event listener] (https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener). – kentcdodds

ответ

4

Используйте атрибут OnClick, не HREF:

<a href="#" onclick="changeStyle();return false;"><span>&#9776</span> MENU</a> 

Лучшей идеей было бы не использовать встроенный Javascript

<a href="#" id="menu"><span>&#9776</span> MENU</a> 

<script type="text/javascript"> 
    var a = document.getElementById('menu'); 

    a.onclick = function() { 
     var header = document.getElementById("header"); 
     var container = document.getElementById("container"); 

     header.style.display = "block"; 
     container.style.marginLeft = "auto"; 
    } 
</script> 

FIDDLE

Примечание: сценарий должен быть помещен после того, как элементы появляется

+0

Спасибо за быстрый ответ, но это все еще не работает. Когда я нажимаю ссылку, ничего не происходит. – adeora

+2

По какой-то причине я не ожидаю, что кто-то с золотым значком в JS предложит использовать inline-обработчики событий. – PeeHaa

+3

@PeeHaa - когда вопрос заключается в том, как применять встроенный обработчик событий, это ответ, который они получат. Я добавил еще одно решение, которое избавляется от встроенных js. – adeneo

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