使用不同的参数计算调用函数的次数

时间:2014-05-19 16:39:58

标签: javascript jquery

我有一个接收int作为参数的函数:

function addToCart(id){
    var cart= cart.info;
    for( i = 0; i < cart.length; i++){
        // SOME CODE
    }
}

addToCart函数正在接收的ID是商店上其他东西的数字。 例如,如果用户选择电影,它将收到3,如果用户选择计算机等,则收到2

所有这些都有效,但我想要的是计算用户拨打电影的次数,例如计算机。因此,当他们查看购物车时,它会站起来#34;您选择了X次电影&#34;。有没有简单的方法呢?

编辑#1

var test1= {
    test: [
        {
            name: "Test1",
            image: "..",
            info: "Test1",
            price: 159.50
        }, {
            name: "Test2",
            image: "..",
            info: "Test2",
            price: 159.50
        }, {
            name: "Test3",
            image: "..",
            info: "Test3",
            price: 159.50
        }, {
            name: "Test4",
            image: "..",
            info: "Test4",
            price: 159.50
        } 
    ]   
}

有关环:

for( i = 0; i < test1.length; i++){
    if(id == [i]){
        if($("#testDiv" + [i]).length == 0) {
            $("#stuff").append('<div id="test1'+ [i] +'"></div>');
            $("#test1" + [i]).append('//WRITE OUT INFO ABOUT JSON-object');
            $("#test1" + [i]).append('//WRITE OUT INFO ABOUT JSON-object');
            $("#test1" + [i]).append('//WRITE OUT INFO ABOUT JSON-object');
        } 
    }
}

for循环位于addToCart内部,如果用户向购物车添加内容,则forloop内的Jquery内容会运行。但是,只有div ID不存在。如果它存在,那么我需要计算该项目被点击的次数。

使用这种方法我可以使用它:

if([i]  == 0){
                    test1Sum++;
                    $("#total" + [i] ).html(test1Sum);
                } else if([i]  == 1) {
                    test2Sum++;
                    $("#total" + [i] ).html(test2Sum);
                } else if ([i]  == 2){
                    test3Sum++;
                    $("#total" + [i] ).html(test3Sum);
                } else if ([i] == 3){
                    test4Sum++;
                    $("#total" + [i] ).html(test4Sum);
                }

但有没有更好的方法呢?因为对于我添加到JSon列表的每个新对象,我必须编写一个新的else if语句

6 个答案:

答案 0 :(得分:1)

var counters = { movies: 0, computers: 0 };

if(id === 3){
   counters.movies +=1;
}

编辑以上内容以包含所有案例并在以后显示给您的用户。这将为您的每个ID保留单独的计数。

答案 1 :(得分:1)

不确定

var ids = ["","","computers","movies"];
cart.counter = {};
function addToCart(id) {
  if (cart.counter[ids[id]]!=null) cart.counter[ids[id]]++;
  else cart.counter[ids[id]]=0;
  var msg ="";
  for (var tp in cart.counter) {
    msg+="\nYou called "+ tp + ":"+cart.counter[tp])
  }
  alert(msg);
}

答案 2 :(得分:0)

创建一个特定于您的范围的全局函数计数器或计数器,并使用调用方法。

var func_counter=0;

function addToCart() {


   if (addToCart.caller == null) {
      return ("The function was called from the top!");
   } else
      func_counter++;
      return WHATEVER_YOU_WANT_TO;
}

答案 3 :(得分:0)

您需要在购物车中记录每种类型的商品。如果您有一个用于查看购物车内容的页面,则可以使用以下内容:

var itemCount = {};

function addToCart(id){
    var productName = getName(id); // you will need to implement this

    if(itemCount[productName] != null)
        itemCount[productName]++;
    else
        itemCount[productName] = 0; // initialize

    alert('You have ' + itemCount[productName] + ' ' + productName + '(s) in your cart');
}

function removeFromCart(id) {
    var productName = getName(id); // you will need to implement this

    if(itemCount[productName] != null)
        if(itemCount[productName] > 0)
            itemCount[productName]--;
    else
        itemCount[productName] = 0;

    alert('You have ' + itemCount[productName] + ' ' + productName + '(s) in your cart');
}

您需要实施产品名称查找,但通过使用对象属性的括号表示法,您可以动态初始化和更新购物车中的产品计数。

答案 4 :(得分:0)

你可以制作一个数组:

var items = new Array();

function addToCart(id){
     items.push(id)


}

并从购物车中删除商品,将其删除:

 items.pop(id);

获取所选电影的总数,如下所示:

var total = item.length;

答案 5 :(得分:0)

这对我有用:

var TotalCheck= {}
    // Checks if a item exist
        if($("#totals" + [i]).length !== 0){
            TotalCheck["something" + [i]]++;
            $("#totals" + [i]).html(TotalCheck["something" + [i]]);
        }

然后我在我的购物车中有这个,所以得到我在购物车中的物品数量

$("#totals" + [i]).html(TotalCheck["something" + [i]] = 1);