我正在尝试做一个个性测试,我想转换我得到的答案代码(是是a,否是B(这是一个简单的4个问题的儿童个性测试。我有一个函数,它把所有4个问题";标识符";(A和B(转换成字符串,然后我想做一个if语句,告诉程序输出一个基于4个字母代码的答案。所以基本上,当它是AAAA时,程序需要将其转换为Leopard(AAAA=Leopard(。我有将其输出到HTML文件的代码,我只需要将AAAA转换为一个单词。
function getEndingSentence() {
var quizRadio = document.getElementsByName("rq");
var answerCode = ''; //It's easier to handle if we simply merge all sentences into a string
for (var i = 0; i < quizRadio.length; i++) {
if (quizRadio[i].checked) {
answerCode += quizRadio[i].getAttribute("data-endingsentence"); //these are the attributes used to generate quiz answers
}
}
return answerCode;
}
function getAnswer() {
var finalAnswer = ''
var preAnswer = getEndingSentence();
if (preAnswer = "AAAA") {
finalAnswer = 'Jagluiperd'
} else {
finalAnswer = 'Undefined'// just to test if the if statment works
}
return finalAnswer;
}
function setEndingSentence() {
var personalityResults = getAnswer();
document.getElementById("results_screen").className = "";
document.getElementById("generated_text").innerHTML = personalityResults;
}
您可以创建一个枚举。
const answerMap = {
AAAA: 'First result',
AAAB: 'Second result',
...
};
function getAnswer() {
return answerMap[getEndingSentence()];
}
您可能想要添加一个针对无效值的保护,但这应该可以做到。例如,getEndingSentence()
返回"AAAA",answerMap['AAAA']
返回"First result"。
另一种选择是使用switch语句:https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Sentencias/switch
但我认为枚举效果更好。
我假设您想要一种针对多个结果的方法,因为这是您的代码应该工作的原因。如果要将键转换为定义的值,可以使用对象来避免多个If条件。
const quizResults = {
'AAAA': 'Leopard',
'AAAB': 'Lion', // ..and so on for each case
}
function getAnswer() {
var preAnswer = getEndingSentence();
return quizResults[preAnswer];
}