我是javascript的新手,需要一些帮助!我想制作一个神奇的8球脚本,为某些问题提供特定答案。到目前为止,我有这样的话,如果我问一个具体的问题,它会给我一个答案,但我想改变它,以便根据问题是否使用“谁”或“什么”给我一个具体的答案'或者如果一个问题使用'a''d'和'b'以及类似的东西。有谁知道怎么做,你能帮助我吗?我完全陷入困境,不知道怎么回事。谢谢你的帮助!
<script>
function eightBall() {
var answer = document.getElementById("answerBox").value;
var images = ['answerYes.png', 'answerNo.png', 'answerAskLater.png', 'answerNotL.png', 'answerMaybe.png'];
if (answer.search(/Will I be rich?/) > -1) {
var askLater = '../images/answerAskLater.png'
document.getElementById('eightTemplate').src = askLater;
} else if (answer.search(/Will I be happy?/) > -1) {
var no = '../images/answerNo.png'
document.getElementById('eightTemplate').src = no;
} else if (answer.search(/Will I live to be 90 years old?/) > -1) {
var yes = '../images/answerYes.png'
document.getElementById('eightTemplate').src = yes;
} else if (answer.search(/Will I be married later in life?/) > -1) {
var notLikely = '../images/answerNotL.png'
document.getElementById('eightTemplate').src = notLikely;
} else if (answer.search(/Can I have a puppy?/) > -1) {
var maybe = '../images/answerMaybe.png'
document.getElementById('eightTemplate').src = maybe;
}
}
</script>
答案 0 :(得分:0)
如果您想查看问题是否包含某个字词,那么我建议使用javascript的Regular Expressions。这些表达式可用于测试或提取某些单词甚至句子结构。例如:
var questionPattern = new RegExp('.+\?$');
//returns true if answer ends with question mark
var isQuestion = questionPattern.test(answer);
你实际上已经在使用正则表达式而不知道它。传递给搜索功能的所有内容都是简单的正则表达式。例如:
/.+\?$/
是我在上面的代码中声明的相同正则表达式的简写方式。您还可以构造正则表达式,以查看字符串是否以单词what开头:
/^(what)/i
有关正则表达式的更多信息,请查看here。希望它有所帮助!
答案 1 :(得分:0)
我建议将所有案例放在一个表中,而不是大量类似的if/then/else
语句,这样你就可以循环它了。
function eightBall() {
var possibilities = [
{ match: /Will I be rich\?/,
answer: 'AskLater' },
{ match: /Will I be happy\?/,
answer: 'No' },
...
];
var answer = document.getElementById('answerBox').value;
for (var i = 0; i < possibilities.length; i++) {
if (possibilities[i].test(answer)) {
document.getElementById('eightTemplate').src = '../images/answer' + possibilities[i].answer + '.png';
return;
}
}
// Display a default answer here
}
您可以将who
,what
,字母或其他任何内容的正则表达式添加到possibilities
表中。
答案 2 :(得分:0)
还有一种更简单的方法可以实现这一目标:str.toLowerCase().contains("who");
但RegExp是您进行复杂检查的最佳选择。
答案 3 :(得分:0)
斜杠之间的东西不必匹配整个字符串。如果字符串在任何地方包含小写的“b”,则以下内容将显示answerYes.png
。例如,当字符串为“你喜欢蓝莓吗?”时它会匹配。或“abcd”。
else if (answer.search(/b/) > -1) {
var yes = '../images/answerYes.png'
document.getElementById('eightTemplate').src = yes;
}
为清楚起见,将answer
变量重命名为question
可能是个好主意,因为看起来您正在使用它来保存问题的值。
这种做法可能对你正在做的事情很好。只要您想要做的只是在问题中找到单词,字母或短语,它就会起作用。如果你想变得更复杂,并且匹配一般模式而不是特定的文本字符串,你可能想要了解其他人建议的正则表达式(RegExp)。