【发布时间】:2018-09-12 08:13:54
【问题描述】:
function checkAnswers() {
let score = 0;
if (options1.value == 'correct') {
score++;
options1.style.backgroundColor = 'lightGreen';
} else {
options1.style.backgroundColor = 'pink';
}
if (options2.value == 'correct') {
score++
options2.style.backgroundColor = 'lightGreen';
} else {
options2.style.backgroundColor = 'pink';
}
if (options3.value == 'correct') {
score++
options3.style.backgroundColor = 'lightGreen';
} else {
options3.style.backgroundColor = 'pink';
}
alert(`your score is ${score}`)
}
checkButton.onclick = checkAnswers;
我想让这个脚本是三元的,我该怎么做?我试图把这样的代码放在下面:
function checkAnswers() {
options1.value == "correct" ? score++;
options1.style.backgroundColor = 'lightGreen': options1.style.backgroundColor = 'pink';
options2.value == "correct" ? score++;
options2.style.backgroundColor = 'lightGreen': options2.style.backgroundColor = 'pink';
options3.value == "correct" ? score++;
options3.style.backgroundColor = 'lightGreen': options3.style.backgroundColor = 'pink';
}
checkButton.onclick = checkAnswers;
如果我们可以将上面的第一个代码变成三元运算符,是否可以变得更短?
【问题讨论】:
-
作为一般的经验法则,在编程时,更喜欢可读性而不是简短。从长远来看,放弃三元组将帮助您和您的程序员同事理解您的意思。
-
三元运算符的主要目的是用作表达式——返回一些东西。
-
更好的技术是创建一些 CSS 类
.option-correct { background-color: lightGreen }等,然后代码可以变成options1.className = 'option-' + options1.value;等等,没有任何条件。 -
@Duncan - 完全同意使用类。不过,您仍然需要确定
score,这涉及条件(在if或条件运算符中)。 -
@Duncan 这是代码的文件,pastebin.com/WczMr8UG,你能给我一个例子,并纠正它,
标签: javascript if-statement ternary-operator