用 JS 和负数值变量范围给文本着色

Coloring Text with JS and negative numeric variable ranges

知道如何为变量范围使用负数值吗?

var colorMatch = {
'0-19'     : 'red',
'20-59'    : 'orange',
'60-100'   : 'green'

};

我一直在使用上一个问题中的这段 JS 代码来为具有可变数值范围的文本着色

链接到这个Fiddle

例如我正在尝试 '-5-0' : 'blue',

周围有 thoughts/work 吗?

我建议按如下方式更改 mc 对象的结构:

var mc = {
  blue: [-10, -1],
  red: [0, 19],
  orange: [20, 59],
  green: [60, 100]
};

这样,您就不必从字符串中解析范围。

$(document).ready(function(){
  
  var mc = {
    blue: [-10, -1],
    red: [0, 19],
    orange: [20, 59],
    green: [60, 100]
  };
  
  function between(x, min, max) {
    return x >= min && x <= max;
  }


  
  var dc;
  var first; 
  var second;
  var th;
  
  $('p').each(function(index){
    
    th = $(this);
    
    dc = parseInt($(this).attr('data-color'), 10);
        
    $.each(mc, function(color, [min, max]) {
      first = parseInt(min, 10);
      second = parseInt(max, 10);

      if(between(dc, first, second)){
        th.addClass(color);
      }
    });
  });
});
.blue {color:blue}
.red {color:red}
.orange {color:orange}
.green {color:green}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p data-color="-5">Lorem -5</p>
<p data-color="19">Lorem 19</p>
<p data-color="25">Lorem 25</p>
<p data-color="55">Lorem 55</p>
<p data-color="60">Lorem 60</p>
<p data-color="61">Lorem 61</p>
<p data-color="100">Lorem 100</p>

您好,我为您制作了这个简单的脚本。我相信 understand/use.

很简单

function colorFromRange(number) {
  var defaultColor = "orange"
  var ranges = [
    {
      start: -5,
      end: 0,
      color: "blue"
    },
    {
      start: 0,
      end: 5,
      color: "red"
    },
    {
      start: 5,
      end: 10,
      color: "green"
    }
  ]
   
   
  var chosenColor = ranges.find(area => (number >= area.start && number <= area.end))
  return chosenColor ? chosenColor.color : defaultColor
}

function spoilColor(color) {
  document.getElementById('spoiler').style.color = color
}
<h1 id=spoiler>Text with color changing effect.</h1>
<br>
<input type=number step=1 value=0 id=number oninput=spoilColor(colorFromRange(this.value)) />
<p>
  Text changes color according to the input's value.
</p>