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”的最小值和最大值。

使用 JavaScript、JQuery(可能还有 SPServices),如何获取 XML 中特定属性的最小值和最大值(ows_CtID,在本例中)?

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'...如果它是带小数的数字,请将其更改为 parseFloat。

保罗。

于 2013-08-09T17:12:58.137 回答