Могу ли я сделать это в 1 случай вместо многих, если еще заявления - PullRequest
0 голосов
/ 13 февраля 2020
const ticket = {
                   movie : document.getElementById("movie").value,
                   amount : document.getElementById("amount").value,
               };

Это мой объект, и я хочу проверить ввод. Но я не уверен, как изменить операторы if-else на один случай переключения, поскольку он имеет разные операторы.

PS: для целей обучения мне нужно использовать javaScript, а не jQuery.

if(ticket.movie ===""){
    document.getElementById("warningMovie").innerHTML = "need to choose a movie"
}else{
    document.getElementById("warningMovie").innerHTML = "";
}

if(ticket.amount === ""){
    document.getElementById("warningAmount").innerHTML = "need to choose amount"
}else{
     document.getElementById("warningAmount").innerHTML = "";
}

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Как-то так?

Я использую Object.entries и Условный оператор (троичный) дважды:)

и добавьте ключ объекта к идентификатору диапазона - я мог бы использовать warningAmount, но тогда мне пришлось бы использовать заглавные буквы

Обратите внимание, что объект мог быть создан путем зацикливания на входных элементах

Также игнорировать ("aeiou".indexOf(item[0].toLowerCase())>=0?"n ":" ") если тебе не нравится

const ticket = {
  movie: "",
  amount: 0,
  snack: "Chips",
};

for (let [key, value] of Object.entries(ticket)) {
  document.getElementById("warning_" + key).innerHTML = 
    value ? "" : 
    "need to choose a"+ ("aeiou".indexOf(key[0].toLowerCase())>=0?"n ":" ") + key
}
<span id="warning_movie"></span><br/>
<span id="warning_amount"></span><br/>
<span id="warning_snack"></span><br/>
0 голосов
/ 13 февраля 2020

Я бы использовал троичный оператор в этом случае. Например:

1002 *
...