Добавяне на слушатели на събития свободно

Имам затруднения с добавянето на слушатели на събития към елементи в моите html документи. какво ми липсва

Винаги правя грешки.

Искам изобщо да го разбирам и да го използвам свободно.

Например новото ми изпитание; това дори е код от подобен въпрос, току-що промених първото събитие на „щракване“. когато не казвам нищо за елемента, за който добавям слушателя, той работи, но върху кликванията върху цялото тяло.

Но виждам следните грешки в Safari на моя Mac:

[Error] TypeError: 'null' is not an object (evaluating 'formslink.addEventListener')
    global code (entr1.html, line 21)

Кодът за това е по-долу:

<html>
    <head>

    </head>
<script>
    function entranceForms()
    {
        var forms =  document.getElementById('entranceforms');

        if (forms.style.display === null || forms.style.display == 'none')
        {
            forms.style.display = 'block';
        }
        else
        {
            forms.style.display = 'none';

        }
    }
    var formslink=document.getElementById('formslink');
    formslink.addEventListener('click', entranceForms, false);
    var formscancel=document.getElementById('formscancel');
    formscancel.addEventListener('click', entranceForms, false);
    </script>

    <body>
    <p id="formslink">entrance</p>

    <DIV ID='entranceforms' STYLE='display: none; width: 100px; height:100px; border: 1px solid; position: absolute; top: 300px; left: 600px; z-index:1;
           background-color:white; opacity:1.0' >
            <P ID='formscancel'> Cancel </P> </DIV>


    </body>
    </html>

person sçuçu    schedule 16.03.2014    source източник
comment
Поставете маркера <script> от <head> до (преди) <body>.   -  person Rahil Wazir    schedule 16.03.2014
comment
все още казва едно и също нещо.   -  person sçuçu    schedule 16.03.2014
comment
Опитвате се да получите достъп до елементи, преди те да съществуват. Поставянето на вашия <script> елемент като последно дете на body трябва да поправи това; в противен случай обвийте цялото нещо във функция, която се изпълнява, когато се случи събитието load (или DOMReady).   -  person CBroe    schedule 16.03.2014
comment
не виждам нищо, което да маркира това като разрешено или теб като отговарящ.   -  person sçuçu    schedule 16.03.2014


Отговори (1)


Имате нужда от елемент, за да добавите метода.

http://plnkr.co/edit/pgCqxCQ8MGeiahymcCpg?p=info

var elem = document.getElementById('entrancelink');
elem.addEventListener('click', entranceForms, false);
person Chi Row    schedule 16.03.2014
comment
но го имах. въпреки че сега работи, като постави скрипта като дете на тялото в и на всички html, както каза @CBroe. - person sçuçu; 16.03.2014