如何在javascript中更新数量
我有这样的桌子如何在javascript中更新数量,javascript,codeigniter,cart,Javascript,Codeigniter,Cart,我有这样的桌子 <?php $no=1; foreach($this->cart->contents() as $items): ?> <input type="hidden" value="<?php echo $items['rowid']?>" class="rowid" id="<?php echo $items['rowid']?>" name="rowid"/> <tr><td> <?
<?php $no=1;
foreach($this->cart->contents() as $items): ?>
<input type="hidden" value="<?php echo $items['rowid']?>" class="rowid" id="<?php echo $items['rowid']?>" name="rowid"/>
<tr><td> <?php echo $no;
$data = array('id' => $items['id'], 'name' => 'id', 'value' => $items['id']);
echo form_hidden($data); ?></td>
<td><?php echo $items['name']?><?php $items['options']['exp']?></td>
<td><input type="text" value="<?php echo $items['qty']?>" name="qty" id="<?php echo $items['id']?>" class="qty"/>
<button class="update" id="<?php echo 'up'.$items['id']?>" style="margin-top:-10px"><i class=" icon-refresh"></i>update</button></td>
<td><?php echo $this->cart->format_number($items['price']); ?></td>
</tr>
我想买个xox。这是我的密码
$(".update").click(function(){
var idbarang = $(".qty").attr('id');
var qty = $(".qty").val();
var row = (this.id);
var rowid = row.substr(2);
但是当我更新它的时候,xxx总是会改变。我想是因为attr('id')。
如何更新xox
$(".update").click(function(){
var qty = $("#121").val();
但是,id在整个HTML文档中应该是唯一的。当前,您的按钮和输入具有相同的id,这是无效的HTML。HTML
为了更正html,我使用了数据id
自定义属性。要了解有关自定义属性的更多信息,请查看自定义属性及其使用说明
<table>
<tr><td>xxx</td>
<td><input type="text" class="qty" data-id="123"/>
<button class="update" id="123">update</button></td>
<td class="display" data-id="123">500</td>
<td>[subtotal]</td>
</tr>
<tr><td>xox</td>
<td><input type="text" class="qty" data-id="121"/>
<button class="update" id="121">update</button></td>
<td class="display" data-id="121">505</td>
<td>[subtotal]</td>
</tr>
</table>
如前所述,id必须是唯一的(更详细),但由于您似乎使用它们来标识产品id,而不是传统的DOM元素id,因此我试图保持这种精神
通过在行声明中使用数据id
属性(即
),然后使用子选择器,您还可以更加语义化地构建内容,例如:
$("tr[data-id='"+idbarang+"'] .display").html(qty);
使用]
和
之间的空格
结论
你可以看到这里的一切都在一起。希望对您有所帮助。在HTML中,id应该是唯一的整体HTML元素HTML属性id必须是唯一的才能成为有效的HTML。您还可以使用$(“.qty”)查询选择所有元素。调试您的变量,您应该能够看到您得到了一个数组。嗯,它对我不起作用。我有console.log(qty)和idbarang,但结果是undefinedit在链接的fiddle中工作。我不知道怎样才能帮得上忙。
$(".update").click(function(e){
var t = e.target;
var idbarang = $(t).attr('id');
var qty = $("[data-id='"+idbarang+"'].qty").val();
$("[data-id='"+idbarang+"'].display").html(qty);
})
$("tr[data-id='"+idbarang+"'] .display").html(qty);