Может ли быть несколько исполнений для оператора if?

По сути, я хочу, чтобы это было так, чтобы

if(condition) {"do this" || "do that"};

В частности, у меня так, что если для определенного div установлен определенный цвет (выбранный случайным образом из массива), то 1 из 4 других div меняет свой цвет на определенный цвет.

Спасибо!

РЕДАКТИРОВАТЬ: я думаю, мне больше интересно, могу ли я рандомизировать "тогда" заявление. Я делаю игру, поэтому я хочу избежать выбора того, какой из 4-х дивидов я хочу получить новый цвет (это будет означать, что каждый экземпляр сценариев каждый раз одинаков)

2 ответа

Решение

Для оператора if может быть много исполнений. Столько, сколько вам нравится. Что вы можете сделать, это использовать несколько if в этом операторе if, чтобы выбрать правильный div или использовать вместо него переключатель. Например:

var array = [3, 4, 1, 2];

ЗАМЕЧАНИЕ: что-то, что я делаю, это перетасовываю массив, который смешивает индексы, перед случайным выбором

var my_array = array.sort(); // This will change your array, for example, from [3, 4, 1, 2] to [1, 2, 3, 4].
or 
var my_array = array.reverse(); // This will change your array, for example, from [3, 4, 1, 2] to [4, 3, 2, 1].

var random_condition = Math.floor((Math.random() * 3)); // select at random from 0 to 3 because the array is ZERO based

И тогда вы делаете свой лог:

if(condition) {
    if (random_condition == 1 ) {
        "do this" with div 1 // array [0] == 1
    }
    else if (random_condition == 2 ) {
        "do this" with div 2 // array [1] == 2
    }
    else if (random_condition == 3 ) {
        "do that" with div 3 // array [2] == 3
    }
    else if (random_condition == 4 ) {
        "do that" with div 4 // array [3] == 4
    }
}

Или используйте переключатель

if(condition) {
    switch (random_condition) {
        CASE '1':
            "do this" with div 1 // array [0] == 1
            break;
        CASE '2':
            "do this" with div 2 // array [1] == 2
            break;
        CASE '3':
            "do this" with div 3 // array [2] == 3
            break;
        CASE '':
            "do this" with div 4 // array [3] == 4
            break;
        default
            // do nothing
            break;
    }
}

Можно сделать несколько вещей в одном блоке (в окружении { а также }), но просто

if(condition) {
 console.log("either do this"); 
 console.log("and do that");
} else {
 console.log("or do this"); 
 console.log("and this as well");
}

или '||' как например, сценарии оболочки не используются здесь в JavaScript.

остальная часть может быть разделена снова, например

if (c1) {
} elseif (c2) {
} else {
}

и это еще, если вы можете повторить столько условий, сколько хотите.

Вы также можете нарезать кубиками:

function dice() {
    return Math.floor(Math.random() * 6 + 1);
}

а затем просто сделайте sth с элементом, который имеет правильный номер:

getElementById("div"+dice()).innerHtml = "changed";
Другие вопросы по тегам