5

ajax 呼び出しで完全な関数を処理しようとしています。値が未定義の場合、var を空の文字列としてキャストします。それ以外の場合は、値を文字列配列にキャプチャしたいと思います。

問題は、問題の変数の値が未定義として返される場合でも、if ステートメントを入力していることです。ここで何が欠けていますか?

completefunc: function (xData, Status) {
      $(xData.responseXML).SPFilterNode("z:row").each(function() {
        if(typeof $(this).attr("ows_Products") !== undefined) {
          console.log($(this).attr("ows_Products"));
          arr = $(this).attr("ows_Products").split(',');
        }
        else {
          arr = "";
        }
      });
    }
4

2 に答える 2

16

typeofは文字列値を返すため、文字列として比較する必要があり"undefined"ます。例えば、

if(typeof $(this).attr("ows_Products") !== "undefined") { ... }

編集 - 詳細情報:

typeof の MDN ページを確認すると、次のように表示されます。

typeof 演算子は、評価されていないオペランドの型を示す文字列を返します。

これは、それ自体を返すこととは大きく異なります (JavaScriptでは、 、 などTypeのコンストラクター関数を返すようなものになるでしょう)。したがって、 を使用する場合は、常に、、などの文字列と比較することになります。StringArraytypeof"object""string""undefined"

于 2012-05-14T16:44:44.097 に答える
0
if($(this).attr("own_Products")){
       arr = $(this).attr("ows_Products").split(',');
}else{
       arr=""
}
于 2012-05-14T16:59:07.287 に答える