2014-09-27 1 views
-3

Вот код в моем файле JS:JS файл не работает

function arrayContains(array, value){ 
    return array.indexOf(value) > -1; 
} 
var possibleOptions = ["male", "female", "m", "f"]; 
var gender = prompt("What's your gender?",""); 
while(!arrayContains(possibleOptions, gender)) 
    gender = prompt("Invalid input. What's your gender?"); 
var name = prompt("What's your name?",""); 
var greeting = (gender == "male" || gender == "m") ? "Sup dude." : "Sup girl."; 
alert("Hello, " + name + "! " + greeting); 

Я получаю ошибку:

Line: 5 
char: 1 
Object expected. 

Я не могу понять это.

+0

добавить '\' перед '' '. Я думаю, '' 'ваша проблема –

+1

[' ваш код'] (http://jsfiddle.net/6c1qbq5t/) работает отлично – mithunsatheesh

+0

Этот код работает без ошибок: http://jsfiddle.net/cscr3bvu/ – Quentin

ответ

1

две проблемы:

  1. Как уже упоминалось в комментариях ж/cscript.exe хост скрипт не поддерживает ни строки(), ни тревога()
  2. JScript массивы не имеют .IndexOf() метод

Вы должны свернуть свой собственный:

function arrayContains(array, value){ 
    for (var i = 0, e = array.length; i < e; ++i) { 
     if (array[i] === value) { 
      return true; 
     } 
    } 
    return false; 
} 

function prompt(p) { 
    WScript.Stdout.Write(p + " > "); 
    return WScript.StdIn.ReadLine(); 
} 

function alert(s) { 
    WScript.Echo(s); 
} 

var possibleOptions = ["male", "female", "m", "f"]; 
var gender = prompt("What's your gender?",""); 
while(!arrayContains(possibleOptions, gender)) 
    gender = prompt("Invalid input. What's your gender?"); 
var name = prompt("What's your name?",""); 
var greeting = (gender == "male" || gender == "m") ? "Sup dude." : "Sup girl."; 
alert("Hello, " + name + "! " + greeting); 

выход (консоли):

cscript 26073853.js 
What's your gender? > neuter 
Invalid input. What's your gender? > male 
What's your name? > tarzan 
Hello, tarzan! Sup dude. 

cscript 26073853.js 
What's your gender? > female 
What's your name? > jane 
Hello, jane! Sup girl.