Динамически созданный элемент в событии iE9 не работает

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.


person Community    schedule 15.12.2011    source источник


Ответы (1)


Вы используете 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.

person Gabriel Gartz    schedule 15.12.2011
comment
функция deleteImage уже есть в другом файле javascript, который я включил. Но здесь, в setAttribute, deleteImage получает параметры. - person ; 16.12.2011
comment
Отредактировано, чтобы применить функцию удаления изображения, с этой областью и параметрами, которые вам нужны. - person Gabriel Gartz; 16.12.2011