Атрибут create в js вызывает исключение "не функция"
Я использую js для изменения содержимого div, которое вводит содержимое. Я хочу использовать их с Ajax. Я использовал блокнот Firefox для отладки этой функции:
function show(id){
var div = document.getElementById('com');
div.innerHTML = '';
var input1 = document.createElement('input')
.createAttribute('type').setAttribute('type', 'hidden')
.createAttribute('value').setAttribute('value',id )
.setAttribute('name','id' );
var input2 = document.createElement('input')
.createAttribute('type').setAttribute('type', 'input')
.createAttribute('name').setAttribute('name', 'com');
var btn = document.createElement('button')
.createAttribute('onClick').setAttribute('onClick', 'post()');
btn.innerHTML = 'Comment';
div.appendChild(input1).appendChild(input2).appendChild(btn);
}
и что я получил это:
/*
Exception: document.createElement(...).createAttribute is not a function
@Scratchpad/2:2
*/
Я ничего не понял, есть идеи?
2 ответа
Я верю .createAttribute()
принадлежит document
, а не отдельным элементам, чтобы объяснить эту ошибку: .createElement()
возвращает элемент, и этот элемент не имеет функции .createAttribute()
,
Но вам не нужно использовать .createAttribute()
перед звонком .setAttribute()
потому что последний создаст атрибуты элемента, если они еще не существуют. Тем не менее, я думаю, .setAttribute()
возвращается undefined
так что вы не можете по-настоящему связать это. Попробуйте сделать это по одному шагу за раз:
var input1 = document.createElement('input');
input1.setAttribute('type', 'hidden');
input1.setAttribute('value',id );
input1.setAttribute('name','id' );
// etc.
По сути, исключение говорит о том, что нет функции с именем "createAttribute". И это правильно:
.createAttribute()
является функцией document
: https://developer.mozilla.org/en-US/docs/DOM/document
Таким образом, функции не могут быть связаны, как вы пытаетесь это сделать. Вы должны позвонить им индивидуально. И вообще, "createAttribute" больше не должен использоваться (см. " Использование createAttribute против простой установки атрибута напрямую?").
function show(id){
var div = document.getElementById('com');
div.innerHTML = '';
var input1 = document.createElement('input');
input1.setAttribute('type', 'hidden');
input1.setAttribute('value',id );
input1.setAttribute('name','id' );
var input2 = document.createElement('input');
input2.setAttribute('type', 'input');
input2.setAttribute('name', 'com');
var btn = document.createElement('button');
btn.setAttribute('onClick', 'post()');
btn.innerHTML = 'Comment';
div.appendChild(input1).appendChild(input2).appendChild(btn);
}