OnClick找不到执行的函数



我正在使用onclick((函数将项目添加到购物车中。

<button class='btn pull-right' id = 'cartBtn' onclick = 'addToCart(<?php echo $id;?>)'><span class='glyphicon glyphicon-shopping-cart'></span></button>

这是JS:

$(document).ready(function(){
    var cart = [];
    var id = $("#itemId").text();
    var stockAvailable = $("itemStock").text();
    var inCart = false;

    function addToCart(item){
        id = item;
            if (inCart == true){
                console.log("item already in cart");
            }
            else{
                cart.push(id);
            }
    }

但是,单击按钮时,我会在控制台中出现以下错误:

ReferenceError: addToCart is not defined

我已经在单独的文件上写了JS代码,并将其插入了头部部分。这里可能有什么问题

您在不定义的情况下不能使用addtocart。您可以在要使用此功能的地方定义它。

$(document).ready(function() {
  function addToCart(item) {
    console.log('added');
  }
});
addToCart('item');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

正确的方式

function addToCart(item) {
  console.log('added');
}
$(document).ready(function() {
});
addToCart('item');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

来自官方jQuery文档。https://learn.jquery.com/ususe-jquery-core/document-ready/

tldr:document.ready仅运行一次,因此在其之外定义了您的功能。

在这里,我根据您的问题向您展示非常基本的示例代码

var id, cart = [], stockAvailable, inCart = false;
$(document).ready(function(){
  id = $("#itemId").text();
  stockAvailable = $("itemStock").text();
});
function addToCart(item){
  id = item;
  if (inCart == true){
      console.log("item already in cart");
  }
  else{
      cart.push(id);
      inCart = true;
      console.log("item added in cart");
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class='btn pull-right' id = 'cartBtn' onclick = 'addToCart(1)'><span class='glyphicon glyphicon-shopping-cart'></span> Add to Cart</button>

无论如何您都在使用jQuery,因此您可以与JQuery Event Handler联系。

请使用jQuery点击事件找到答案。

$("#cartBtn").on("click", function(item){
       id = item;
            if (inCart == true){
                console.log("item already in cart");
            }
            else{
                cart.push(id);
            }
        }
   })

最新更新