これが、私が取り組んでいる在庫システムの始まりです。基本的に、圧縮形式のアイテムと数量の配列を取り、アイテムをアイテム div に出力します。
以下を実行してもエラーは発生しません。
$('.item_amount').html(collection[itemName].amo);
次のように、セレクターの後に get() メソッドを追加します。
$('.item_amount').get(i).html(collection[itemName].amo);
「$(".item_amount").get(i).html は関数ではありません」を生成します。
これは行が変更しているものです:
<div class="item">
<img src="" class="item_image"/>
<div class="item_amount"></div>
</div>
エラーの原因となっている行は、配列内のすべてのキーをループする for ループにあります。次に、変数「i」に格納されているインデックスに基づいて、item_amount div の配列からアイテムの数量を出力します。for ループは、配列内の各項目のオブジェクトも作成し、コレクション オブジェクトに入れます。
以下の完全なコード:
<body>
<div class="item">
<img src="" class="item_image"/>
<div class="item_amount"></div>
</div>
<div class="item">
<img src="" class="item_image"/>
<div class="item_amount"></div>
</div>
<div class="item">
<img src="" class="item_image"/>
<div class="item_amount"></div>
</div>
<script type="text/javascript">
var collection = new Object();
function makeItem(itemName, id, amo) {
collection[itemName] = new item(id, amo);
}
function item(id, amo) {
this.id = id;
this.amo = amo;
}
var inventoryCom = "368.9,366.15,384.32"; //compressed inventory
var inventoryArr = inventoryCom.split(',');
for(var i=0; i < inventoryArr.length; i++) {
var itemName = 'item' + (i + 1); //unique name for each item
var itemArr = inventoryArr[i].split('.');
makeItem(itemName, itemArr[0], itemArr[1]);
$('.item_amount').get(i).html(collection[itemName].amo);
}
</script>
</body>