如何在多个函数中设置参数,然后将其切换并保持不变

时间:2016-01-23 01:52:19

标签: javascript jquery charts amcharts

我意识到这是一个糟糕的头衔,但这是我能想到的最好的,让我看看能否解释一下:

我有一个图表,由于图表和数据的性质,我使用两个函数并隐藏div。除了这两个功能,我还有两种不同类型的图表(烛台和线条)。我需要能够让某人设置图表的“类型”(蜡烛或线条),然后能够在“类型”保持不变的情况下更改图表的时间段。

到目前为止,我倾向于使用全局“类型”变量但我明白使用全局不是一种很好的做法,即使它不起作用,它也不会是正确的解决方案)。代码基本上是这样的:

type = 'line';

function makeDayChart(type, days){
    if(type == 'line'){
    *make line chart*
  } else {
    *make candle chart*
  }
}

function makeHourChart(type, hours){
    if(type == 'line'){
    *make line chart*
  } else {
    *make candle chart*
  }
}

这种方法对我来说有点道理,但我知道不是这样做的。我一直在努力研究这种方法,但今天一直无法找到任何东西,如果你知道任何关键词或任何适用的东西我会很感激。

这是一个jsbin,它显示了我为此而提出的代码,它显然不起作用,但是......它是一些东西。

感谢您花时间阅读本文。

http://jsbin.com/nusufohosi/1/edit?html,js,console,output

考虑到@ magreenberg的回答,我试图实现它。这是一个更新:

JSBin

1 个答案:

答案 0 :(得分:1)

听起来你正在寻找的是一个构造函数。 JS构造函数是JS与类最接近的东西。例如,您有一个构造函数,用于构建图形并保存其所有属性

// SETUP Chart constructor function
function Chart(type, time){
    this.type = type;
    this.time = time
}

Chart.prototype.buildChart = function(){
     if (this.time === "hour"){
        if (this.type === "line"){
            // build hour line chart
        } else if(this.type ==="candle"){
            // build hour candle chart
        }
     } else if (this.time === "days"){
        if (this.type === "line"){
            // build days line chart
        } else if(this.type ==="candle"){
            // build days candle chart
        }
     }
}

// Instantiate new object
var chartA = new Chart("line", "days");
var chartB = new Chart("chandle", "hours");

// call graph function to build object
chartA.buildChart();
chartB.buildChart();

构造函数很难理解。特别是在原型链接方面。希望这能让你开始朝着正确的方向前进。