2

要素が存在し、メソッドの 1 つが空白でないかどうかを確認したいですか?

次のコードを見てください。

                 
変数の説明;           
var desc = 予測[i].getElementsByTagName('desc')[0]
if (desc != null || desc.textContent == "") {
    description = desc.textContent
}

したがって、基本的に要素が定義されていない場合、エラーが発生します。

Uncaught TypeError: Cannot read property 'textContent' of undefined

まあ、ネストされifsたを使用できますが、この問題にはより優れた解決策があるはずです。

4

2 に答える 2

3

あなたの状態は間違っています:

desc != null || desc.textContent == ""

undefined != nullは に評価されるためfalse、条件は にアクセスしようとしますdesc.textContent

コンテンツが存在し、空でない場合は、コンテンツをコピーしたいようです。これは、次の条件で実行できます。

var description,
desc = forecasts[i].getElementsByTagName('desc')[0];

if (desc && desc.textContent.length) {
    description = desc.textContent;
}
于 2013-05-18T07:46:22.740 に答える
1
var description;           
var desc = forecasts[i].getElementsByTagName('desc')[0]
if (desc && desc.textContent) {
    description = desc.textContent
}

var string = ""; if (string)JavaScript では false と評価されるため、単純に等価チェックを削除して、それが false とdesc.textContent評価されないようにすることができます。

descまた、存在するがdesc.textContent先に進まない場合と言っているように、OR 演算子を削除する必要がありますdesc.textContent。OR ステートメントを AND 演算子に置き換えますif (desc && desc.textContent)

例: http://jsfiddle.net/pFBpc/5/ - 3 つの if ステートメントがありますが、true と評価されるのは 1 つだけです。

于 2013-05-18T07:47:23.413 に答える