2016-03-12 2 views
0

В конечном счете, я предлагаю пользователю угадать, что в конечном итоге изменилось, поэтому независимо от того, что пользователь вводит, он всегда будет заглавной буквой и сделает остальное в нижнем регистре. (Я делаю это так, если пользователь вводит в предположение, что строка будет либо соответствовать, либо не соответствовать значениям в массиве.) Я попытался сделать оператор for для использования счетчика циклов (3 общих догадки - это то, что они ищут). Но когда я пытаюсь использовать indexOf для проверки массива, я продолжаю получать ошибку «неожиданного маркера» в этой строке, которая содержит инструкцию indexOf. Итак, вопрос будет (1), что я делаю неправильно в этой строке кода?Cant получить инструкцию indexOf для работы

//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++; 
    } 
} 
+1

'=' is присваивание, '==' является равенством. Кроме того, вы не закрываете свой 'if (..)' paren –

+0

благодаря Crayon, который исправил его ... не могу поверить, что я забыл синтаксис «снова» благодаря пучкам. –

+0

Почему бы не использовать 'String # toLowerCase()'? –

ответ

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 (догадка)> -1, чтобы проверить, если догадка присутствует в любой индекс массива. Для проверки только одной позиции индекса это будет indexOf (guess) == 0.

+0

, который сделал трюк .. спасибо Anders. –

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 
} 

Также: используйте инструменты, которые обеспечивают статический анализ кода. A jslint.com или jshint.com для js - хороший выбор. Для этого также предусмотрены плагины IDE (с использованием любого из этих двух и более), см. Is there a working JSLint Eclipse plug-in?.

+0

Я обязательно проверю эти инструменты, спасибо вам большое. –

Смежные вопросы