2013-12-11 3 views
1

Я начинаю обучение по Javascript, и я нахожусь в тупике по своей первой функции. Орфография это ради себя, вот что я пытаюсь достичь:
объявить переменные: цвет и первичный
набор цвет, равный ид «цвет» и захватить значение входного
установить первичный равным одному из двух строки, основанные на значении цвета, красном, синем или желтом
отображение первичного в p с идентификатором «ответ»stumped, beginner javascript function

Я не получаю выход. Я подозреваю, что я должен использовать что-то вместо .value, и, может быть, утверждение или неверно. Кто-нибудь, пожалуйста, дайте мне несколько указателей? Буду весьма признателен за это. Вот код:

<div> 
Color:<input id="color" /> 
<p>Primary Color?</p> 
<button onclick="myFunction1()">Click</button> 
<p id="answer"></p> 

<script> 
function myFunction1() 
{ 
    var color,primary; 
    color=document.getElementById("color").value; 
    primary=(color="red"||"blue"||"yellow")?"It is a primary color":"Not a primary color"; 
    document.getElementById("answer").innerHTML=primary; 
} 
</script> 

</div> 

ответ

4

Две проблем.

  1. = является назначением. === - сравнение. (== также сравнение, но тип type изменение).
  2. Вам необходимо полное выражение на каждой стороне ваших ОШ

такой:

(color === "red" || color === "blue" || color === "yellow") 

В качестве альтернативы, вы можете просто найти массив:

(["red", "blue", "yellow"].indexOf(color) !== -1) 
+2

Важно отметить, что не все браузеры поддерживают 'indexOf' для массивов. Однако документация MDN предоставляет надстройку для этой функции. –

1

Тройное выражение должно оценить каждое условие, используя ==, оператор = используется для присваивания.

primary=(color=="red"|| color=="blue"||color=="yellow")?"It is a primary color":"Not a primary color"; 

Вы также можете рассмотреть lowercasing прилагаемого значения для случая нечувствительного сравнения:

color=document.getElementById("color").value.toLowerCase(); 

JS Fiddle:http://jsfiddle.net/K3KUK/

+0

Рассмотрите возможность использования '===' вместо '==', потому что об этом проще рассуждать? – AVP

1

Вы не можете использовать || для сравнения значений цепей, он задает условия. Вам нужно сравнить переменную с каждым значением:

color == "red" || color == "blue" || color == "yellow" 
Смежные вопросы