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ので、実際にチェーンすることはできません。一度に 1 ステップずつ実行してみてください。

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()の関数ですdocument: https://developer.mozilla.org/en-US/docs/DOM/document#Methods

したがって、関数を連鎖させることはできません。個別に呼び出す必要があります。いずれにせよ、「createAttribute」はもう使用しないでください ( createAttribute の使用 vs. 属性を直接設定するだけですか? を参照)。

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 に答える