2017-06-02 54 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()將字符串轉換爲數字。 ;) –