在两个设定的最小值和最大值之间迭代数字

时间:2015-09-18 09:16:10

标签: javascript loops

我正在制作一个javascript循环,每次循环运行时,某些元素会非常微妙地改变颜色。我正在改变的值是HSL颜色的L值。

现在我有了这个。

var h = 10,
s = 0.5,
l = 1 / ((i += 0.01) % 10);

color = hsl(h, s, l);

现在,它会输出从浅到深的颜色,每当它碰到黑色时重复(因为模运算)。

L值必须介于0和1之间,但是我想将操作的输出限制在0.1到0.9之间,以避免太暗和太亮的颜色。 有谁知道如何调整操作以满足这些要求?

此外,我想知道是否有人知道如何在每次达到最小值或最大值时使输出反转(而不是从顶部重新开始),这意味着它输出如下数字:

0.9 ... 0.89 ... [...] ... 0.11 ... ... 0..1 0.11 ... [...] ... 0.89 ... 0.9 ... 0.89等等

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式将0到1之间的输出值限制在0.1到0.9之间:

boundcingValue = Math.abs(1 - 2 * valueBetween0and1)

对于0到1之间的值,可以使用

var h = 10,
s = 0.5,
l = 1 / ((i += 0.01) % 10);

lbouncing = Math.abs(1 - 2 * l);
lcapped = 0.1 + lbouncing * 0.8;

color = hsl(h, s, lcapped);

所以最终的解决方案是:

$(function() {
    $( "#from" ).datepicker({
      defaultDate: "+1w",
      changeMonth: true,
      numberOfMonths: 1,
      onClose: function( selectedDate ) {
        $( "#to" ).datepicker( "option", "minDate", selectedDate );
      }
    });
    $( "#to" ).datepicker({
      defaultDate: "+1w",
      changeMonth: true,
      numberOfMonths: 1,
      onClose: function( selectedDate ) {
        $( "#from" ).datepicker( "option", "maxDate", selectedDate );
      }
    });
  });
虽然没有测试过它......