MS IE: создание события через DOM

Rosco

Новичок
MS IE: создание события через DOM

Подскажите, почему не вызывается событие (алерт не появляется) в следующем коде:
PHP:
<script language="javascript">
function proc(){
alert('ok!');
}

var a1 = document.createElement("a");
var text_a1 = document.createTextNode("Test");
var href1 = document.createAttribute("href");
href1.value="#";
a1.setAttributeNode(href1);        
a1.appendChild(text_a1);
onclick1 = document.createAttribute("onclick");
onclick1.value="javascript:proc();";
a1.setAttributeNode(onclick1);
document.getElementsByTagName("body")[0].appendChild(a1);
</script>
Проблема только в MS IE...
 

Scud

Новичок
наверное это форум балует, заменил с ":_p"

по теме:
зачем javascript: в onclick?, там не URL должен быть а хендлер, суй тогда уж javascript:_proc() в href, да и createAttribute() это тоже оверхед imho.
var a = document.createElement('a');
a.innerHTML = 'Foo bar';
a.href = 'javascript:void(0)'; // а может и не надо
a.onclick = proc;
document.body.appendChild(a);

фсё
 

Rosco

Новичок
Автор оригинала: Wicked
a.onclick = function () { proc(10); } ?
Отлично.
А если мы имеем код:
PHP:
var vr=10;
a.onclick = function () { proc(vr); }
vr=12;
В proc() хочется получить 10, а получаем 12. Как быть?
 

Wicked

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

-~{}~ 05.09.06 22:31:

по-моему тебя заботит другое: как разделить значения vr для разных объектов "a"? или я не прав?
 

Rosco

Новичок
Автор оригинала: Wicked
разве это неправильно, что во время вызова функции она возьмет актуальное значение переменной, вместо того, которое было на момент создания функции?

-~{}~ 05.09.06 22:31:

по-моему тебя заботит другое: как разделить значения vr для разных объектов "a"? или я не прав?
Именно так. :)
 

Wicked

Новичок
a1.vr = 10;
a1.onclick = function() { proc(this.vr); );
a2.vr = 12;
a2.onclick = function() { proc(this.vr); );
 

Rosco

Новичок
У меня похожая мысль была. Просто, думал есть более изящное решение...
Спасибо.
 
Сверху