0

json入力とテンプレートからHTML文字列を作成しています。

JSONは次のようになります。

...
"count": "5",
"items": {
   "classes":[],
   "href": ["index.html","search.html","brands.html","users.html","orders.html"],
   ...
}

私は次のようにJavascriptで調べています:

for (i = 0; i < dyn.list.count; i += 1) {
   elem = util.getTemplate('tmp_navbar_element', temps)
     .replace('class_abc"','class_abc '+dyn.list.items.classes[i]+'"')
     .replace("href='","href='"+dyn.list.items.href[i])
    ...
}

すべてが正常に機能しますが、JSON構成で渡されない要素を処理するための最良の方法がわかりません。

たとえば、の場合、ユーザーがクラスを指定しなかったため、classes = []現在、すべてにundefinedを追加しています。elem

質問
チェックして「未定義」のエントリを回避する唯一の方法ですか、if classes[i] !== undefined ...それとも「クラスがある場合にのみクラスを追加する」簡単な方法はありますか?

ありがとう!

4

2 に答える 2

1

いくつかの方法がありますが、これは最も単純な方法の1つです。

.replace('class_abc"','class_abc ' + (dyn.list.items.classes[i] || "") + '"')

それは、不思議なことに強力な||演算子を使用して""、if dyn.list.items.classes[i]is undefined(またはnull、、、、、、0またはfalse[面白い] "")を使用します。

もちろん、それはあなたがまだやっているということを意味しますreplaceあなたはおそらく避けることができます。より平凡なバージョンは次のようになります。

var cls;
for (i = 0; i < dyn.list.count; i += 1) {
   elem = util.getTemplate('tmp_navbar_element', temps);
   cls = dyn.list.items.classes[i];
   if (cls) {
     elem = elem.replace('class_abc"','class_abc '+cls+'"');
   }
   elem = elem.replace("href='","href='"+dyn.list.items.href[i]);
   // ...
}
于 2013-02-17T14:26:20.473 に答える
1

試す:

for (i = 0; i < dyn.list.count; i += 1) {
   elem = util.getTemplate('tmp_navbar_element', temps)
     .replace('tmp_gridcount"','tmp_gridcount '+(dyn.list.items.classes[i] || "")+'"')
     .replace("tmp_gridcount",abc[i])
    ...
} 

変更は、「 dyn.list.items.classes[i] がfalsyの場合、代わりに空の文字列を挿入する」と述べています。

于 2013-02-17T14:32:48.007 に答える