我正在使用Easy Pie Chart并将其略微修改为包括多个百分比和旋转度,以制作完整的饼图。这实际上并没有涉及到EPC,但我想将其作为背景。

我有以下HTML:

<div class="home-slider-chart-container">
    <div data-rotate="0" data-percent="2" class="home-slider-chart"></div>
    <div data-rotate="" data-percent="27" class="home-slider-chart"></div>
    <div data-rotate="" data-percent="20" class="home-slider-chart"></div>
    <div data-rotate="" data-percent="40" class="home-slider-chart"></div>
    <div data-rotate="" data-percent="6" class="home-slider-chart"></div>
    <div data-rotate="" data-percent="5" class="home-slider-chart"></div>
</div>


我想使用jQuery在每个.home-slider-chart中运行并存储当前值和之前的所有data-percent值,然后我将使用它来计算转数。

因此,在我的示例中,最后的data-rotate值将是:

<div data-rotate="0" data-percent="2" class="home-slider-chart"></div>
<div data-rotate="29" data-percent="27" class="home-slider-chart"></div>
<div data-rotate="49" data-percent="20" class="home-slider-chart"></div>
<div data-rotate="89" data-percent="40" class="home-slider-chart"></div>
<div data-rotate="95" data-percent="6" class="home-slider-chart"></div>
<div data-rotate="100" data-percent="5" class="home-slider-chart"></div>


我以为这会行得通,但是它所要做的只是获取先前的百分比,而不是总计所有先前的百分比。

$('.home-slider-chart-container .home-slider-chart').each(function() {
    var thisPercentage = $(this).data('percent');
    var prevPercentage = $(this).prevAll().data('percent');
    var percentageTotal = (thisPercentage + prevPercentage);
    var thisRotation = (percentageTotal / 100 * 360);

    $(this).data('rotate', thisRotation);

});


我已经设置了jsFiddle,这样您就可以看到我要做什么,并且可以将其用作测试环境https://jsfiddle.net/105o7b5m/1/

最佳答案

您需要在.each()循环之外的一个变量,该变量可以跟踪运行总计,并且只需要旋转每个元素才可以运行之前的总计(不包括当前值),例如:

var runningTotal = 0;
$('.home-slider-chart-container .home-slider-chart').each(function() {
    var thisRotation = (runningTotal / 100 * 360);
    $(this).data('rotate', thisRotation);
    // now update the running total for the next segment
    runningTotal += $(this).data('percent');
});


有效的jsFiddle演示:http://jsfiddle.net/jfriend00/14rc3zL6/

关于javascript - 在jQuery中总计和存储先前的数据编号(值),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29609925/

10-11 05:09