3

我正在使用 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
*/

我什么都不懂,有什么想法吗?

4

2 回答 2

7

我相信.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.
于 2013-03-23T11:16:56.773 回答
3

基本上,异常表明没有名为“createAttribute”的函数。这是正确的:

.createAttribute()是一个函数documenthttps ://developer.mozilla.org/en-US/docs/DOM/document#Methods

所以这些功能不能像你尝试做的那样被链接起来。你必须单独打电话给他们。无论如何,不​​应再使用“createAttribute”(请参阅​​Using createAttribute vs. just setting the attribute?)。

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);
}
于 2013-03-23T11:17:40.883 回答