数组值求和并作为click参数传递

时间:2012-06-29 12:44:53

标签: jquery

我有一个值数组,我用它来创建列表项,然后将其附加到有序列表中。

我想要的是创建一个点击函数,该函数根据列表中项目的顺序传递这些值的总和(即,如果您单击列表中的第3个项目,则总计所有前面的值和传递总和为变量。

2 个答案:

答案 0 :(得分:0)

var jList = $("#bargraph ul").attr('class', 'bars');

我不认为这是你想要的东西,它试图设置属性" class"去"酒吧"。如果要添加课程,则应使用addClass。要选择使用类,您可以这样做:

var jList = $(".bars");

选择器可以合并。

答案 1 :(得分:0)

所以只需循环遍历数组,对值进行求和。我们只需要知道intIndex就可以做到这一点,而不是objValue。

var jList = $("#bargraph ul").addClass('bars');

// for each item in your array, create an LI
$.each(datas,function(intIndex, objValue){
    var intSum = 0, i = 0;

    for (i; i < intIndex; i++) {
        // just to make sure you don't try and access an array value out of bounds
        if (i >= datas.length) {
            break;
        }

        intSum += datas[intSum];
    }

    jList.append($("<li>"+"</li>").addClass('bar'+intIndex).css('height', objValue).attr('data-sum', intSum));
});

// for each LI, add an event listener
$("#bargraph li").on('click', function(e) {
    // here's your value
    currentSlide = $(this).attr('data-sum');
});

回想起来,有更好的方法来做到这一点。我宁愿将所有逻辑移动到事件监听器以计算总和。在这种情况下,你可以使用jquery选择器来获取所有LI的数组,循环遍历它们直到你到达当前的LI,总结它们的高度属性。但就目前而言,这应该有效。