这是我正在处理的库存系统的开始。基本上,它采用压缩形式的项目和数量的数组,并将项目输出到项目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>
答案 0 :(得分:1)
.get(i)
返回DOM元素,它没有.html()
方法 - 这就是js引擎想要对你说的。
您需要使用.eq(i)
代替。像
$('.item_amount').eq(i).html(collection[itemName].amo);
或
$('.item_amount:eq(' + i + ')').html(collection[itemName].amo);
答案 1 :(得分:0)
此行可能有问题
var itemName = 'item' + (i + 1); //
这可能会使数组计数超出上限。检查itemName值。
还尝试为此
添加提醒 collection[itemName].amo