<Item id="419" rank="0.0000" date_added="2012-09-24T19:43:14" date_end="2012-10-15T19:43:14" uid="134333" price=" ,-" district="-1" district_text="Friend" cid="9" cid_text="Underholdning" img_height_thumb="433" />
<Item id="418" rank="0.0000" date_added="2012-09-24T19:17:42" date_end="2012-10-15T19:17:42" uid="134332" price=" ,-" district="-1" district_text="Friend" cid="9" cid_text="Underholdning" img_height_thumb="254" />
<Item id="405" rank="102.0000" date_added="2012-09-23T18:55:20" date_end="2012-10-14T18:55:20" uid="134331" price=" 102,-" district="-1" district_text="Friend" cid="761" cid_text="Mote" img_height_thumb="280" />
这是示例xml数据。我正在使用此代码获取xml。
xmlDoc = xmlhttp.responseXML;
var items = xmlDoc.getElementsByTagName("Item");
//想要添加代码
for (i = 0; i < items.length && i < 40; i++) {
var bRank = items[i].getAttribute("rank");
}
//想要添加代码
我想过滤大于0的所有数据排名。 我想只在这个地方添加过滤器,所以我的其余代码不会改变。 那么如何过滤项变量并获取其他变量中的过滤值。所以循环不受影响。 我可以在for循环中更改变量的名称。
请建议我这个想法。
首次修改
xmlDoc = xmlhttp.responseXML;
var items1 = xmlDoc.getElementsByTagName("Item");
var items = $(items1).filter('Item').each(function () {
var bRank = $(this).attr('rank');
var tempRank = bRank.replace("0000", "").replace(".", "");
if (tempRank > 0)
return this;
});
alert(items.length);
alert(items1.length);
警报的答案是3。
但是对于第一个警报1和第二个警报3,答案应该是这样的。
但是每个警报都得到相同的响应。 请检查并告诉我你的建议。 感谢
答案 0 :(得分:1)
试试这个,
<强> Live Demo 强>
var items = $('item').filter(function(){
if(parseFloat($(this).attr('rank')) > 0)
return this;
});
for (i = 0; i < items.length && i < 40; i++) {
var bRank = items[i].getAttribute("rank");
}
您需要将xml添加到DOM以在xml上应用过滤器。之后你可以删除它。
<强> Live Demo 强>
$('#div1').html(xmlDoc);
var items = $('#div1 item').filter(function(){
if(parseFloat($(this).attr('rank')) > 0)
return this;
});
$('#div1').remove();
for (i = 0; i < items.length && i < 40; i++) {
var bRank = items[i].getAttribute("rank");
}
答案 1 :(得分:0)
var filteredArray = [];
for (i = 0; i < items.length && i < 40; i++) {
if(parseFloat(items[i].getAttribute("rank"), 10) > 0) {
filteredArray.push(items[i]);
}
}
然后 filteredArray
将包含rank > 0
的所有项目。