通过if else语句显示特定输出

时间:2016-10-25 11:35:22

标签: javascript

我正在研究如何根据用户输入在dat.gui界面的下拉列表中显示条目,但我遇到的问题与dat.gui编程无关,而是我缺乏javascript技能

我有两个列表,一个显示Starsystem01作为名称。 另一个是Planets,显示Starsystem内的特定行星。 如何编写此语句,以便这两个数组仅在选择0或1时显示?

var jumpSwitcher = 0;

    this.Starsystems = 'dat.gui';
//Starsystem list
    gui.add(this, 'Starsystems', ['0', '1']).onChange(function(value) {
        if (value === '1') {
            jumpSwitcher = 1;
        }
    });

    this.Planets = 'dat.gui';
//if the var jumpSwitcher is 0, display these variables in the Planets array.
    if (jumpSwitcher === 0) {
        Planets = ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune'];
    } 

//if the jumpSwitcher is 1, meaning if the user has clicked on "1" under the Starsystem, show these planets. 
    else if (jumpSwitcher === 1) {
        Planets = ['Ilos', 'Tuchanka', 'Palaven', 'Illium'];
    }

    gui.add(this, 'Planets', Planets).name("Planets in this system").onChange(function(value) {
    });

我会说这应该有用,但不知怎的,它不行。当我简单地在语句中使条件成为if(1> 0){show 1} else {show 2}时,它就会这样做。

PS:

var jumpSwitcher = 1;  
    this.Starsystems = 'dat.gui';
gui.add(this, 'Starsystems', ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']).onChange(function(value) {

    jumpSwitcher = +value;

});

this.Planets = 'dat.gui';

switch (jumpSwitcher) {
    case 1:    
        gui.add(this, 'Planets', ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune']).name("Planets in this system").onChange(function(value) {

        });    

        break;
    case 2:    
        gui.add(this, 'Planets', ['Ilos', 'Tuchanka', 'Illium', 'Palaven']).name("Planets in this system").onChange(function(value) {

        });

        break;    
}

1 个答案:

答案 0 :(得分:2)

您需要重置jumpSwitcher

更改

if (value === '1') {
    jumpSwitcher = 1;
}

jumpSwitcher = +value;

这会将jumpSwitcher设置为多个值。

另一个解决方案可能是数组内部值的值,如果这些值是连接的,则为数值而不是字符串。

gui.add(this, 'Starsystems', [0, 1]).onChange(function(value) {
//                           ^^^^^^
    jumpSwitcher = value;
});