我正在建立一个动态的svg calendar bar
。为了计算条形图需要多少个划分(以月为单位),我将条形图的总宽度除以以月为单位的日期差异,以确定每个划分中应有多少像素。
基本示例:There are 3 months between the two provided dates; The calendar bar is 935 pixels wide. 935/3(rounded) = 312. Each section of the calendar bar should be approx 312 pixels wide.
现在解决问题。我正在使用一个基本的循环来运行数学并将值推入javascript数组。哪个工作正常。我想做的是通过将数组中的每个后续值添加到先前的值来增加它。
示例:1st value is 312, second value is 614 (312+312), and the final value is 936(312+614) or (312+312+312) however the math has to work.
由于某种原因,我无法为自己的一生而想出如何使它以这种方式推动价值。
这是我目前正在使用的代码。 (请注意,某些正在更新的变量可以在脚本的其他地方声明)
function divideCalendarBar(){
var calBarWidth = 935;
var calBarDivisions = Math.round(calBarWidth/cb_dateDiff);
var leftPositions = calBarDivisions;
var leftPositionsArray = new Array();
for (var i = 1; i < cb_dateDiff; i++) {
leftPositionsArray.push(leftPositions);
};
cb_leftPositionsArray = leftPositionsArray;
}
您的好朋友可能有任何想法,我们将不胜感激!
最佳答案
第一个值为312,第二个值为614(312 + 312),最终值为936(312 + 614)或(312 + 312 + 312)
因此,您可以说您的第一个值是312 x 1
,第二个值是312 + 312 = 312 x 2
,第三个值是312 + 312 + 312 = 312 x 3
。
由于您已经有一个循环,索引的范围是1到(大概)3:
for (var i = 1; i < cb_dateDiff; i++) {
leftPositionsArray.push(leftPositions * i);
};
应该管用