2011-01-25 12 views
0

こんにちは
私はHTML domとハイライト要素を横断するためのjavascriptコードを書いています。
私の問題は、Firefoxは空白をテキストノードとして返します。
タグを返すだけの方法はありますか?例えば、私は "firstChild"が常に最初のタグを返し、テキストを返す必要はありません!firefoxを強制的にスキップして "JavaScript DOM"のDOM解析をスキップします

ありがとうございました

答えて

3

ノードnode.nodeType === 1要素であるかどうかを確認できます。

また、新しいDOM Travelsal APIを関数として実装することもできます。

var dummy = document.createElement("div"); 
var firstElementChild = ('firstElementChild' in dummy) 
    ? function (el) { 
     return el.firstElementChild; 
    } 
    : function (el) { 
     el = el.firstChild; 
     while (el && el.nodeType !== 1) 
      el = el.nextSibling; 
     return el; 
    } 

usage

firstElementChild(el) 
+1

'if'の何が問題なのですか? – ircmaxell

+0

*三項文*に間違いがありますか? :)事は、どちらも間違っていません。この場合、2つの選択肢が実際の変数の下に入れ子になっていることがわかります。また、関連する言葉や括弧も少なくなっています。最後に、firstElementChild 3xを読み書きする必要はありません。 – galambalazs

+0

それぞれ独自のものですが、私はいつも受け入れられている練習では、三項文は可読性のために複数の行にならないようにしていたという印象を受けていました(それ以上の場合、 'if'文に分解してください)。自分自身には、しかし、いくつかは、この貧しいフォーム(pedantic、私は知っているが、注目に値する)を検討するだろう... – ircmaxell

3

代わりにelement.firstElementChildを使用できます。残念ながら、これはIE8以下のisn't supportedです。

また、次のelementノードが見つかるまで、childNodeをクロールする小さな関数を記述することもできます。

1

たぶん、あなたは、このようなTreeWalkerなど他のDOMのトラバーサル方法、のいずれかを試みることができます。

関連する問題