我有一个值数组,我用它来创建列表项,然后将其附加到有序列表中。
我想要的是创建一个点击函数,该函数根据列表中项目的顺序传递这些值的总和(即,如果您单击列表中的第3个项目,则总计所有前面的值和传递总和为变量。
答案 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,总结它们的高度属性。但就目前而言,这应该有效。