0

JQuery & SPServices を使用して、次のような XML を受け取ります。

<?xml version="1.0"?>
<soap:Envelope xmlns: . . .> <soap:Body>
<GetListItemsResponse xmlns=" ... ">
 <GetListItemsResult>
  <listitems xmlns:s=" ... >
   <rs:data ItemCount="4">
      <z:row  ows_CtID="5"  ows_ID="1"  ows_Ct="GR"   />
      <z:row  ows_CtID="9"  ows_ID="4"  ows_Ct="PC"   />
      <z:row  ows_CtID="2"  ows_ID="5"  ows_Ct="G"    />
      <z:row  ows_CtID="3"  ows_ID="7"  ows_Ct="O55"  />
   </rs:data>
  </listitems>
 </GetListItemsResult>
</GetListItemsResponse>
</soap:Body></soap:Envelope>

(もちろん、もっと多くの情報を得ることができます。概念を簡単に示すために、これは省略されています。)

ows_ID順序付けは に従っており、 とows_IDows_CtID値にはギャップがあることに注意してください。

ows_CtID; つまり、「<code>2」と「<code>9」の最小値と最大値を取得したいのです。

ows_CtID,JavaScript、JQuery (および場合によっては SPServices) を使用して、XML (この場合)の特定の属性の最小値と最大値を取得するにはどうすればよいですか?

4

1 に答える 1

1

すべての z:row をループし、min と max の変数を保持し、より大きな値またはより小さな値が見つかった場合にのみ更新する必要があります...例として、SPServices の completefunc 関数内に次のコードを配置します。

var min = null,
    max = null;

$(xData.responseXML).SPFilterNode("z:row").each(function() {

    var $this = $(this),
        val   = parseInt( $this.attr("ows_CtID") );

    if (min === null) {

        min = max = val;

    }

    if (val < min) {

        min = val;

    }

    if (val > max) {

        max = val;

    }

});

alert("Min: " + min + " | Max: " + max);

フィールド (この場合は ows_CtID) が整数以外の場合は、上記を変更して 'parseInt' を使用しないようにします... 10 進数を含む数値の場合は、代わりに parseFloat に変更します。

ポール。

于 2013-08-09T17:12:58.137 に答える