我完全糊涂了。这是我的第一个基于Javascript和jQuery的Web项目(没有使用其他语言)。这是某种纺织品商店。尺码有不同的价格。像38-43成本20,43-48成本22和48-52成本24.这就是我想把它放在网站上的方式(38-43 => 20,43-48 => 22,等等)。文章存储在xml文件中,如下所示:
<article id="025064">
<title>Tshirt</title>
<desc>Description</desc>
<size value="38" price="50,12" />
<size value="39" price="50,12" />
<size value="40" price="50,12" />
<size value="41" price="50,12" />
<size value="42" price="50,12" />
<size value="43" price="50,12" />
<size value="44" price="50,12" />
<size value="45" price="50,12" />
<size value="46" price="50,12" />
<size value="47" price="54,15" />
<size value="48" price="54,15" />
<size value="49" price="54,15" />
<size value="50" price="54,15" />
<size value="51" price="58,18" />
<size value="52" price="58,18" />
<size value="53" price="58,18" />
<size value="54" price="58,18" />
</article>
我使用jQuery来解析它。这一切都有效。现在我找到了价格最低和最高的尺寸。为此,我将我所知道的一切都放在了数组中。
var prices = new Object();
var laenge = 0;
$(this).find('size').each(function(){
var size = $(this).attr('value');
var price = $(this).attr('price');
if(typeof(prices[price])!=="undefined")
{
laenge = prices[price].length;
}
prices[price] = new Array();
prices[price][laenge] = size;
});
现在我试图通过对数组进行排序来获得最高和最低的价格
$.each(prices, function(index, value){
prices[index].sort();
var maximum = prices[index].length-1;
alert(prices[index][0]+" "+prices[index][maximum]);
});
但我只是从0索引中获取值。所有其他索引(大于0)都不起作用,即使var最大值表示有几个元素。通过使用下一个代码(在我之前显示的代码中)向我展示了索引被命名为常规用于(0,1,2,3,4,5):
$.each(prices[index], function(index1, value) {
alert(index1);
});
但我无法访问它们。我感到很困惑。是的,我知道,下次我应该使用Console.Log。但这不应该存在问题:)
二手浏览器:谷歌浏览器17.0.963.66米 Web服务器(遗憾地):win server 2003标准上的IIS v6
提前非常感谢你!
最佳,
卡尔文
答案 0 :(得分:1)
在示例中,您无法访问0之后的任何元素,因为您正在删除此行中的任何先前值
$(this).find('size').each(function(){
...
// here you erase all previous values of prices
prices[price] = new Array();
...
});
你可以通过仅创建一个新数组来解决这个问题,如果没有,就像这样:
var prices = {};
$(this).find('size').each(function() {
var size = $(this).attr('value');
var price = $(this).attr('price');
// first ensure that there is an array at prices[price]
// '[]' and 'new Array()' are equivalent in this case
prices[price] = prices[price] || [];
// don't hassle with the last index, simply add the size
prices[price].push(size);
});
prices[price] || []
行上的一句话:
与C / Java不同,JavaScript中的||
运算符不返回所涉及的值之间的布尔比较,而是左手值,如果它等于true或右手值,如果左手值为false。因此[1,2,3] || []
将返回[1,2,3]
,但undefined || []
将返回空数组。