2017-12-17 10 views
0

私は最後に行数を持つid`sを持ついくつかの要素をページに持っています。例値を増やして配列を作成する

<input type="hidden" name="productid1" id="productid1" value="4941"> 
<input type="hidden" name="qty1" id="qty1" value="2"> 
<input type="hidden" name="productid2" id="productid2" value="4942"> 
<input type="hidden" name="qty2" id="qty2" value="1"> 
<input type="hidden" name="productid3" id="productid3" value="4941"> 
<input type="hidden" name="qty3" id="qty3" value="5"> 

iについての要素がカウント知っている、とi`mはproductidX値からキーとjsの配列を作る必要があり、値の値の合計私はその

var out = []; 
var tot = jQuery('#totitems').val(); 

    for(var i = 1; i <= tot; i++) 
    { 
     out[jQuery('#productid'+i).val()] += parseFloat(jQuery('#devQty'+i).val()) 
    } 

ようにしようと試みqtyX

が、これが動作しない(

i`mはtahtようsomesing必要は

[4931] => 7 
[4942] => 1 

誰かがこれについて正しい方法を教えてくれますか?

ミスのため申し訳ありませんが、英語ではない私の母国語

+0

代わりに '#のdevQty' + Iの例では「#qty '+ i – Dmitry

+0

オブジェクトを配列に変更する、var out = {} –

+0

配列の既存の項目が未定義であり、何かを追加しようとしています。あなたは答えをチェックする前にこれをチェックする必要があります:D –

答えて

0

この例のようにオブジェクト{}を使用してみてください:

var out = {}; //change to a object 
var tot = jQuery('#totitems').val(); 

for(var i = 1; i <= tot; i++) 
{ 
    //now you can acess like properties/hashmap 
    out[jQuery('#productid'+i).val()] += parseFloat(jQuery('#devQty'+i).val()); 
} 

ます。また、このような使用+=前に定義されていないかどうか確認が必要です。

var out = {}; //change to a object 
var tot = jQuery('#totitems').val(); 

for(var i = 1; i <= tot; i++) 
{ 
    //now you can acess like properties/hashmap 
    if(out[jQuery('#productid'+i).val()]) 
     out[jQuery('#productid'+i).val()] += parseFloat(jQuery('#devQty'+i).val()); 
    else 
     out[jQuery('#productid'+i).val()] = parseFloat(jQuery('#devQty'+i).val()); 
} 

#qtyの代わりに#devQtyを少し間違えてあなたはtot VARを解析する必要があります。

var out = {}; //change to a object 
 
var tot = parseInt(jQuery('#totitems').val()); 
 

 
for(var i = 1; i <= tot; i++) 
 
{ 
 
    if(out[jQuery('#productid'+i).val()]) 
 
     out[jQuery('#productid'+i).val()] += parseFloat(jQuery('#qty'+i).val()); 
 
    else 
 
     out[jQuery('#productid'+i).val()] = parseFloat(jQuery('#qty'+i).val()); 
 
} 
 

 
console.log(out);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<!--For testing--> 
 
<input type="hidden" name="totitems" id="totitems" value="3"> 
 

 

 
<input type="hidden" name="productid1" id="productid1" value="4941"> 
 
<input type="hidden" name="qty1" id="qty1" value="2"> 
 
<input type="hidden" name="productid2" id="productid2" value="4942"> 
 
<input type="hidden" name="qty2" id="qty2" value="1"> 
 
<input type="hidden" name="productid3" id="productid3" value="4941"> 
 
<input type="hidden" name="qty3" id="qty3" value="5">

これは、これを実行する別の方法です:

var out = {}; 
 

 
jQuery("[name='product']").each(function(){ 
 

 
    var value = parseFloat(jQuery(this).val()); 
 
    var productID = jQuery(this).data("id"); 
 
    if(out[productID]) 
 
     out[productID] += value; 
 
    else 
 
     out[productID] = value; 
 
}); 
 

 
console.log(out);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="hidden" name="product" data-id="4941" value="2"> 
 
<input type="hidden" name="product" data-id="4942" value="1"> 
 
<input type="hidden" name="product" data-id="4941" value="5">

関連する問題