0

どして:

var isError = document.getElementById('companyName-element').getElementsByTagName('ul');
console.log(isError);

[ul.errors]ファイアバグで戻る

一方:

var isError = document.getElementById('companyName-element').getElementsByTagName('ul').className;
console.log(isError);

戻り値'undefined'.

なぜそれが戻らないの'errors'ですか?

4

4 に答える 4

2

getElementsByTagName要素のリストを返します。

var isError = document.getElementById('companyName-element').getElementsByTagName('ul')[0].className;
于 2012-08-14T10:33:31.150 に答える
0

私の最初の考えは、getElementsByTagNameの結果は配列であるため、次のものが必要になるということです。

....getElementById('companyName-element').getElementsByTagName('ul')[0].className;
console.log(isError);

配列の最初の要素を取得します。

ただし、これは調査もテストもされていません。

于 2012-08-14T10:34:04.567 に答える
0
   var isError = document.getElementById('companyName-element').getElementsByTagName('ul').className;
    console.log(isError);

これは次のように置き換える必要があります

var isError = document.getElementById('companyName-element').getElementsByTagName('ul')[0].className;
    console.log(isError);

document.getElementsByTagName( "ul")はノードリストを提供します

于 2012-08-14T10:34:38.840 に答える
0

getElementsByTagName()一致するものが1つしかない場合でも、一致するものがない場合でも、要素の(Node)list(MDN docu )を返します。

最初のコード例では、そのリストには1つの要素があります。つまり、firebugが表示する要素です。

className2番目の例では、存在しないリストのプロパティ(要素ではありません!)にアクセスしようとすると、が返されundefinedます。classNameその1つの要素にアクセスする場合は、次を使用します。

var isError = document.getElementById('companyName-element').getElementsByTagName('ul')[0].className;
console.log(isError);

複数の要素が返される場合は、ループを使用する必要がある場合があることに注意してください。

于 2012-08-14T10:35:13.100 に答える