-1

次のJavaScript行があります:

<div id="box" name="1" margin="4px" padding="4px" onclick="memory(1)"></div>

関連するmemory()機能は次のとおりです。

function memory(a) {
    var tmpDar = a-1;
    var m = document.getElementsByName(tmpDar);
    m.innerHTML = arrA[tmpDar];

}

ただし、コードを実行しようとすると、HTML は変更されません... 誰か助けてもらえますか?

4

3 に答える 3

1

document.getElementsByName()単一の要素ではなく、NodeList を返します。

したがって、innerHTMLdiv を設定するには、次のように、その配列内のエントリを参照する必要があります。

function memory(a) {
    var tmpDar = a-1;
    var m = document.getElementsByName(tmpDar);
    m[0].innerHTML = arrA[tmpDar];
}

コードinnerHTMLで NodeList オブジェクトのプロパティを設定しますが、これはドキュメントに (視覚的な) 影響を与えません。

一般的にはidの代わりに使用する方がよいでしょうnamedocument.getElementById()次に、次のような方法で使用できます。

function memory(a) {
    var tmpDar = a-1;
    var m = document.getElementById(tmpDar);
    m.innerHTML = arrA[tmpDar];
}
于 2012-12-04T14:52:31.480 に答える
0

0私が知る限り、 の名前を持つすべての要素を見つけようとしています。そして、0名前はありません。

また、他の2つが言ったことは、その配列のインデックスを呼び出す必要がある配列を返します。

于 2012-12-04T14:53:37.037 に答える
0

document.getElementsByName配列を返します。したがって、必要な要素がこの名前で一意である場合は、コードを次のように置き換える必要があります。

function memory(a) {
    var tmpDar = a-1;
    var m = document.getElementsByName(tmpDar);
    m[0].innerHTML = arrA[tmpDar];  // Here I have added index 0
}
于 2012-12-04T14:54:03.460 に答える