2010-06-16 2 views
1

Вот важная часть моей JS кода:Как добавить обработчик onclick в динамический элемент?

function createClose() { 
    var cButton = document.createElement("img"); 
    cButton.src = "close.gif"; 
    cButton.style.cursor = "pointer"; 
    cButton.onclick = closeWindow; 

    document.getElementById("my_window").appendChild(cButton); 
} 

function closeWindow() { 
    document.getElementById("my_window").style.display = "none"; 
} 

Изображение будет создаваться и добавляется, но нет ни одного события OnClick вызывается при щелчке. Я также попытался использовать анонимную функцию, но это тоже не сработало.

Нет, я не буду использовать jQuery (хотя я считаю, что это проще).

+0

Является ли 'img' в строках 3-5, предположительно' cButton'? –

+0

Является ли решение JQuery нормально? –

ответ

2
input = document.getElementById("my_window").appendChild(cButton); 
input.onclick = function() { yourFunction(); }; 

Этот вопрос почти дублирует «Add onclick property to input with JavaScript» В качестве альтернативного пути я видел использование input.setAttribute('onclick', 'yourFunction();'); тоже, но не может гарантировать, что это работает.

+0

Могу ли я добавить обработчик событий, прежде чем присоединять его к документу? Как я уже сказал, анонимные функции в этом случае не работали. – Khan

+0

Взгляните на упомянутый и связанный вопрос, они делают это, прежде чем добавить его, как вы говорите (: Надеюсь, что это помогает –

+0

. Маршрут setAttribute() работал для меня, теперь мне просто нужно проверить его на совместимость между браузерами. .. – Khan

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