Как установить атрибут OnClick со значением, содержащим функцию в ie8? - PullRequest
32 голосов
/ 19 июня 2009

Моя цель - изменить атрибут onclick ссылки. Я могу сделать это успешно, но результирующая ссылка не работает в ie8. Это работает в ff3.

Например, это работает в Firefox 3, но не в IE8. Почему?

<p><a id="bar" href="#" onclick="temp()">click me</a></p>

<script>
    doIt = function() {
        alert('hello world!');
    }
    foo = document.getElementById("bar");
    foo.setAttribute("onclick","javascript:doIt();");
</script>

Ответы [ 4 ]

61 голосов
/ 19 июня 2009

Вам не нужно использовать setAttribute для этого - этот код работает (также IE8)

<div id="something" >Hello</div>
<script type="text/javascript" >
    (function() {
        document.getElementById("something").onclick = function() { 
            alert('hello'); 
        };
    })();
</script>
9 голосов
/ 19 июня 2009

Лучше всего использовать javascript-фреймворк, такой как jquery или прототип, но в случае неудачи вы должны использовать:

if (foo.addEventListener) 
    foo.addEventListener('click',doit,false); //everything else    
else if (foo.attachEvent)
    foo.attachEvent('onclick',doit);  //IE only

редактирование:

Кроме того, ваша функция немного отключена. это должно быть

var doit = function(){
    alert('hello world!');
}
7 голосов
/ 21 сентября 2013

Вы также можете настроить onclick для вызова вашей функции следующим образом:

foo.onclick = function() { callYourJSFunction(arg1, arg2); };

Таким образом, вы также можете передавать аргументы. .....

1 голос
/ 27 февраля 2014

Вы также можете использовать:

element.addEventListener("click", function(){
    // call execute function here...
}, false);
...