2017-06-02 51 views
-1

我是Javascript/Jquery的新手,目前正在撰写一个网上购物网站作为练习。我想编写一个函数,这样每当我点击的形象“buy_btn.jpg”,项目在购物车的数量将增加1在jQuery中可以点击()用于<img>吗?

增加这里是我的js代码:

$('img[alt="buy"]').click(function(){ 
    var item_bought = $(".shopNum").val(); 
    item_bought++; 
    $(".shopNum").html(item_bought); 
}) 

这里是我的按钮和购物车数量的html代码:

<div class = "topr_bot"> 
    <div class = "topr_bot_left"> 
     <img src = "image/buy_btn.jpg" alt="buy"> //this is the "add to 
     <p>Attention: This item will ONLY provide a normal receipt</p> 
     </div> 
    <div class = "topr_bot_right"> 
     <img src = "image/buy_btn.jpg" alt="buy2"> 
     </div> 
    </div> 
    <div class="shopCar fr"> 
     <span class="shopText fl">Shopping Cart</span> 
     <span class="shopNum fl">0</span> 
    </div> 

的问题是,我试图通过它的ALT标签来获取图像,并使用警报和console.info()调试它,但没有弹出/出现。是因为我用错误的方式来获取图像,或者因为我不应该把click()放在img上?

谢谢。

+0

你为什么不只是添加一个id到该图像,选择这种方式? –

+0

如果您对HTML有任何控制,请在图像中添加一个类或ID。不要使用alt属性来选择图像。 – JJJ

+0

似乎代码是正确的,我正在使用'.html()'输入类'shopNum'的文本。 –

回答

0

您遇到的主要问题是您使用val()span获取号码。您应该使用text()。另请注意,在对数字进行任何数学运算之前,您应该使用parseInt()将该值真正转换为数字。虽然你有什么工作,由于隐式类型强制,它是不可靠的。试试这个:

$('img[alt="buy"]').click(function() { 
 
    var item_bought = parseInt($(".shopNum").text()) || 0; 
 
    $(".shopNum").html(++item_bought); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="topr_bot"> 
 
    <div class="topr_bot_left"> 
 
    <img src="image/buy_btn.jpg" alt="buy"> //this is the "add to 
 
    <p>Attention: This item will ONLY provide a normal receipt</p> 
 
    </div> 
 
    <div class="topr_bot_right"> 
 
    <img src="image/buy_btn.jpg" alt="buy2"> 
 
    </div> 
 
</div> 
 
<div class="shopCar fr"> 
 
    <span class="shopText fl">Shopping Cart</span> 
 
    <span class="shopNum fl">0</span> 
 
</div>

+0

非常感谢!我没注意到val()不能用于 ... –

+0

没问题很高兴帮助 –

0

我认为您的shopnum的价值将作为string返回,现在最好的尝试是在您声明购买商品时使用jquery parseInt()函数。这应该有希望解决你的问题。

+0

感谢您提及parseInt()将字符串转换为数字。 ;) –

相关问题