2012-03-09 25 views
0


私は完全に混乱しています。 JavascriptとjQueryに基づいた私の最初のWebプロジェクトです(他の言語は使用されていません)。それはある種のテキスタイルショップです。サイズには異なる価格があります。 38-43のように20、43-48のコストは22、48-52のコストは24です。私はそれをウェブサイト(38-43 => 20,43-48 => 22など)に載せる方法です。記事は以下のようにxmlファイルに保存されます:配列インデックスへのアクセス0、

<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インデックスから値を取得します。 varの最大値にはいくつかの要素があるといっても、他のすべてのインデックス(0以上)は機能しません。

$.each(prices[index], function(index1, value) { 
    alert(index1); 
}); 

しかし、私:それは(0、1、2、3、4、5)のように使用される正規であるように(私は前に示したコード内)この次のコードを使用してインデックスが命名されていることを私に示しました。それらにアクセスすることはできません。私はとても混乱しています。そうです、私は次の時にConsole.Logを使うべきです。しかし、それはここにあっ問題になるはずの:)

使用しているブラウザ:Google Chromeの17.0.963.66メートル Webサーバ(悲しそうに):勝利サーバー上のIIS V6 2003標準

事前にどうもありがとうございます!

ベスト、
カルバン

+0

インデックスをfloatに設定できますか?そしてそれが独特であるかどうかあなたはどのように知っていますか?またはそれは重要ですか? – Anthony

答えて

1

あなたはあなただけ作成することで、その問題を解決でき、この行のいずれかの以前の値

$(this).find('size').each(function(){ 
    ... 
    // here you erase all previous values of prices 
    prices[price] = new Array(); 
    ... 
}); 

を消去しているので、あなたが、あなたの例では0の後に任意の要素にアクセスすることはできません

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] || []ライン上の単語:0このような存在。存在しない新しい配列、C/Javaとは異なり、JavaScriptの||演算子は関係する値間のブール比較を返しませんが、左辺の値がtrueまたは右辺の値の場合は左辺の値がfalseの場合は真の値を返します。したがって[1,2,3] || [][1,2,3]を返しますが、undefined || []は空の配列を返します。

+0

解決してくれてありがとうございました!感謝!今私はそれを得る! –

関連する問題