我有一个带4个参数的函数。
function fillTheText (selector, arrText, arrEl, j) {
if (j >= 0) {
return document.querySelector(selector + [j]).innerHTML = arrText[arrEl][j];
} else {
return document.querySelector(selector).innerHTML = arrText[arrEl];
}
}
上述函数被调用三次
function startQuiz (question) {
fillTheText('#question', question[i], 'text');
for (let j = 0; j < question[i].choices.length; j++) {
fillTheText('#choice', question[i], 'choices', j)
}
}
我想进行更改,以便fillTheText
返回单行,但不知道如何使[j]
成为可选项。我尝试了有条件(三元)运算符,但没有成功。
答案 0 :(得分:4)
我认为不是一条线,但仍然是一种改进。
function fillTheText (selector, arrText, arrEl, j) {
var selector = j >= 0 ? selector + [j] : selector;
var value = j >= 0 ? arrText[arrEl][j] : arrText[arrEl];
document.querySelector(selector).innerHTML = value;
}
或者,或许,这个
function fillTheText (selector, arrText, arrEl, j) {
var value = arrText[arrEl];
if (j >= 0) {
selector = selector + [j];
value = value[j];
}
document.querySelector(selector).innerHTML = value;
}
答案 1 :(得分:2)
使用ternary operator
行j>=0
表示j的值为0或更大。
语法:condition?true:false
如果条件为真,?
之后的部分将执行:
之后执行的部分
function fillTheText (selector, arrText, arrEl, j) {
return (typeof j==typeof 123 && j>=0) ? document.querySelector(selector + [j]).innerHTML = arrText[arrEl][j] : document.querySelector(selector).innerHTML = arrText[arrEl];
}