0

編集:これは私がSOで尋ねた最もばかげた質問です。あまり急いで質問しないように気を付けるために、このままにしておきます。

選択した DOM ノードがノードであるかどうかを確認するにはどうすればよいhtmlですか? 通常のプロパティがないことに気付きました。例えば:

var div = document.getElementsByTagName('div')[0];
var html = document.getElementsByTagName('html');

div instanceof HTMLElement; // true
html instanceof HTMLElement; // false

div.tagName; // "DIV"
html.tagName; // undefined

特に、すべての DOM ノード ( 、 など) に対して機能するチェックが必要divですspan。問題は、コードが DOM をクロールし、特定のプロパティをチェックすることです。コードがプロパティを見つけられない場合、コードはhtmlノードに到達し、次の行のためにエラーをスローします。

if (node.tagName.toUpperCase() !== 'OBJECT') { }

が定義されていないため、これはTypeErrorwhen nodeishtmlノードをスローします。node.TagName

前もって感謝します。

4

2 に答える 2

2

問題は、返された最初の要素ではなく、返された配列を見ていることです。getElementsByTagNameこれを試して:

var div = document.getElementsByTagName('div')[0];
var html = document.getElementsByTagName('html')[0]; // notice [0]

div instanceof HTMLElement; // true
html instanceof HTMLElement; // true

div.tagName; // "DIV"
html.tagName; // "HTML"

注: Chrome 開発者ツール バージョン 30.0.1599.101 m でテスト済み

于 2013-10-22T20:53:40.733 に答える
1

あなたの変数htmlは単一のノードではないため、div. [0]あなたのdiv参照のためにあなたがするのと同じように欠けているものを追加してください!

于 2013-10-22T20:52:38.470 に答える