最终我提示用户猜测,然后最终改变,所以无论用户输入什么,它总是大写第一个字母并将其余的小写。 (我这样做,所以如果用户键入猜测字符串将匹配或不匹配数组中的值。)我尝试做一个for语句使用循环计数器(3总猜测是我正在寻找的)。但是当我尝试使用indexOf来检查数组时,我不断得到一个"意外的令牌"包含indexOf语句的那一行上的错误。所以问题是(1)我在这行代码中做错了什么?
//declare variables
var sportsArray = new Array("Football", "Basketball", "Rollerblading", "Hiking", "Biking", "Swimming");
var name = prompt("Enter your name");
var loops = 0;
var score = 0;
var sGuess = prompt("enter your sport guess");
// uses substrings to ultimately capitalize the 1st letter, and make everything after it lowerCase.
var sFirstPart = sGuess.substr(0, 1);
var sFirstCap = sFirstPart.toUpperCase();
var sSecondPart = sGuess.substring(1, sGuess.length);
var sSecondLow = sSecondPart.toLowerCase();
var usableGuess = sFirstCap + sSecondLow;
while(loops < 4){
if(sportsArray.indexOf(usableGuess) = 0 {
document.write("nice guess");
loops++;
}else {
document.write("loser");
loops++;
}
}
答案 0 :(得分:1)
这适用于检查整个数组:
var sportsArray = new Array("Football", "Basketball", "Rollerblading", "Hiking", "Biking", "Swimming");
var name = prompt("Enter your name");
var loops = 0;
var score = 0;
var sGuess = prompt("enter your sport guess");
// uses substrings to ultimately capitalize the 1st letter, and make everything after it lowerCase.
var sFirstPart = sGuess.substr(0, 1);
var sFirstCap = sFirstPart.toUpperCase();
var sSecondPart = sGuess.substring(1, sGuess.length);
var sSecondLow = sSecondPart.toLowerCase();
var usableGuess = sFirstCap + sSecondLow;
while(loops < 4){
if(sportsArray.indexOf(usableGuess) > -1) {
document.write("nice guess");
loops++;
}else {
document.write("loser");
loops++;
}
}
你想使用indexOf(guess)&gt; -1检查猜测是否存在于数组的任何索引处。为了只检查一个索引位置,它将是indexOf(guess)== 0。
答案 1 :(得分:0)
sportsArray.indexOf(usableGuess) === 0)
代替sportsArray.indexOf(usableGuess) = 0
检查左侧是否与常数相等是一个好习惯。它会在大多数浏览器中引发异常:
var a = 3;
if (12 = a) { // throws ReferenceError: invalid assignment left-hand side in Firefox
//do something
}
另外:使用提供静态代码分析的工具。 js的jslint.com或jshint.com是一个不错的选择。还有明确的IDE插件(使用这两者中的任何一个或更多),请参阅Is there a working JSLint Eclipse plug-in?。