if语句为Highcharts xAxis标签

时间:2016-02-18 16:45:37

标签: jquery if-statement highcharts

我已经设法得到这个if语句来运行第一部分,但如果位正确则不会运行else。我必须放错误,因为它只在xAxis上显示(Not Designated)。想知道为什么其他部分不起作用。

labels: {
    formatter: function() {
        // custom formatter
        if (this.x == null) { return "(Not Designated)";

        } else if (this.x != null ) {

            return this.x;
        }                      
},

它必须与我如何获取数据有关,因为我原来的if语句是这样的......

if (this.x == null) return '(Not Designated)';

else return this.x; 

如果我使用“===”设置它不显示(未指定)或任何xAxis值,如果我使用“==”它将显示所有xAxis项目(未指定)。我知道这是一个非常简单的功能,但它不起作用,它或者与Highcharts格式化程序或我想要收集的数据有关。我还没有处理过多的值,所以对于糟糕的标记示例感到抱歉...感谢您的评论!

3 个答案:

答案 0 :(得分:2)

当我使用调试器检查this.x时,它看起来像undefined: enter image description here

我用“this.value”替换“this.x”,图表工作正常。 这是jsfiddle

  if (this.value == 0) {
    return '(Not Designated)';

  } else if (this.value != 0) {

    return this.value;
  }

如果您可以分享您正在使用的类别,那就太棒了!

答案 1 :(得分:1)

首先,在您提供的小提琴中,格式化程序功能未被封装到标签属性中。

labels: {
            formatter: function() {

         if (this.value == 0) {return '(Not Designated)';}
         else {return this.value;}
        },
        },
        },

还有另外两个问题:

  1. this.x未定义,因此使用===检查不会显示x轴,因为此运算符将检查值是否严格等于(更多信息here)。由于undefined未定义,因此您无法检查其值。
  2. 当您将类别名称设为null时,highcharts会将其替换为索引,这就是为什么即使使用==它也无法正常工作。
  3. 我建议将null替换为0,将this.x替换为this.value。 这是你的工作Fiddle

答案 2 :(得分:0)

这是我最终得到的结果,花了我一段时间,但很高兴这会处理所有空值和所有空值,以防你们中的任何人遇到与数据库类似的问题。

// format the xAxis labels to handle null and blank values from database
 formatter: function() {
   if (this.x === null) {
   return "(Not Designated)" + '<br>' + '$' + Highcharts.numberFormat(this.y, 0);
    } else if (this.x === '') {
      return "(Not Designated)" + '<br>' + '$' + Highcharts.numberFormat(this.y, 0);
 }
   return this.x + ' ' + '$' + Highcharts.numberFormat(this.y, 0);
}