Динамически созданный элемент в iE9 Событие не работает - PullRequest
1 голос
/ 15 декабря 2011
var ibutton = document.createElement('input');
ibutton.setAttribute('type', 'button');
ibutton.setAttribute('name', 'button');
ibutton.setAttribute('value', 'Delete');
ibutton.setAttribute('onclick', "deleteImage('<?php echo $_FILES['dt_file']['name'];?>', this,'<?php echo $image_type;?>');return false;");`

Приведенный выше код создает кнопку удаления. Это прекрасно работает только для последней созданной кнопки.

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

Приведенный выше код отлично работает в Mozilla, но не в IE9.

1 Ответ

0 голосов
/ 15 декабря 2011

Вы используете eval в setAttribute, возможно, именно поэтому он не работает.

Но вы можете избежать eval (и это хорошая практика) с чем-то вроде этого:

var ibutton = document.createElement('input');
ibutton.setAttribute('type', 'button');
ibutton.setAttribute('name', 'button');
ibutton.setAttribute('value', 'Delete');
ibutton.onclick = function() { deleteImage.apply(this, '<?php echo $_FILES['dt_file']['name'];?>', this,'<?php echo $image_type;?>');return false };`

, если вы используете this будет ссылаться на ibutton внутри вашей функции deleteImage.

...