javascript 不能使用 forloop 对吗?

标签 javascript function date colors

我正在制作一个事件列表,其中的日期被转换为事件发生前的天数。我希望事件有不同的颜色,更远的更红,更近的更绿。 days 是整数值,我事先检查它是否为 null 或小于 0,然后它为 0。出于某种原因,有时会针对某些事件完全跳过此函数。

这个 getTimeAndColorForElement() 是列表中每个元素的内部循环。

function getTimeAndColorForElement(time, element){
  //time can be ISO 8601-format
  var t = Date.parse(time) - Date.parse(new Date());
  var minutes = Math.floor( (t/1000/60) % 60 );
  var hours = Math.floor( (t/(1000*60*60)) % 24 );
  var days = Math.floor( t/(1000*60*60*24) );

  if(!days || days < 0){
      days = 0;
  }
  var color = getColor(days);
  $(element).css('color', color);

  //... then sets days, hours mins and so on..

}

它调用这个函数来获取它的颜色..

function getColor(days) {

      var red = 0;
      var green = 250;
      var blue = 0;

      //set color more red the more days there is
      for(i = 0; i < days; i++) {
          green -= 15;
          red += 15;
      }

      //keeping it in 0-255 color values.
      if(green < 0) {
          green = 0;
      }
      if(red < 0) {
          red = 0;
      }
      if(blue < 0) {
          blue = 0;
      }
      if(green > 250) {
          green = 250;
      }
      if(red > 250) {
          red = 250;
      }
      if(blue > 250) {
          blue = 250;
      }

      //color in rgb
      var color = "'rgb(" + red + "," + green + "," + blue + ")'";

      return color;
}

最佳答案

你为什么不这样做:

var colorStep = 15,
    red       = colorStep * days,
    green     = 250 - colorStep * days,
    blue      = 0;

...

关于javascript 不能使用 forloop 对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40937588/

相关文章:

javascript - 错误 javascript 代码显示标签值未定义

javascript - 使用js时动画位置不起作用,我需要使用什么?

javascript - 如何在Javascript中获取document.onkeydown函数的名称?

c++ - "Read Access Violation: This was nullptr"以为我正确分配了它......?

java - Excel 中的日期 View 错误

javascript - 每 10 秒更新一次用户位置 - 从 mysql 获取位置

javascript - 取消父项的监听器是否适用于 Firebase 中的子项

javascript - 为什么我只得到 2 和 3 为假? (如果数字是素数则返回真)

javascript - 从纪元计算毫秒

javascript - 优先级-web-sdk : Implementing a DATE8 field