2015-01-13 3 views
0

Я новичок в JavaScript, и я пытаюсь использовать оператор if для оценки выбранного переключателя. Это не сработало, поэтому я спрашиваю, не потому ли, что я сделал что-то неправильно или потому, что это невозможно в JavaScript.Оценка переключателей в JavaScript

<form name = "f1"> 
    <input type = "radio" Name = "r1" Value = "Input" onClick="GetSelectedItem(this)">Input 
    <input type = "radio" Name = "r1" Value = "Output" onClick ="GetSelectedItem(this)">Output 

</form> 


<script> 
var output = document.getElementById('output'); 
function GetSelectedItem(el) { 
    output.innerHTML = el.value; 
    if(output=="Input") 
     *** do stuff *** /// 
    else if(output=="output") 
    ** do stuff2 *** 

} 
</script> 
+3

Там нет ни одного элемента в HTML вы Отвечали, что имеет идентификатор «выход». – Pointy

+0

Хорошо, я могу дать каждой кнопке идентификатор? – Engine

+0

Я думаю, что ваш код как-то упущен? Пожалуйста, снова проверьте свой синтаксис или уточните больше –

ответ

2

выполнимо, да, но вам нужно исправить несколько проблем:

output.innerHTML = el.value; 
if(output=="Input") 

В, если заявление, вы на самом деле проверка на выходе, что опорный элемент, не это текст или внутренний HTML. Оно должно быть:

if(output.innerHTML=="Input") 

или просто (если вы не используете выходной элемент для чего-нибудь еще, но проверка):

if(el.value=="Input") 

Смотрите этот пример:

function GetSelectedItem(el) { 
 
    if (el.value == "Input") { 
 
    alert('input clicked'); 
 
    } else if (el.value == "Output") { 
 
    alert('output clicked'); 
 
    } 
 
}
<form name="f1"> 
 
    <input type="radio" Name="r1" Value="Input" onClick="GetSelectedItem(this)">Input 
 
    <input type="radio" Name="r1" Value="Output" onClick="GetSelectedItem(this)">Output 
 

 
</form>

+0

спасибо за ваши мысли! – Engine

+0

должны подождать 10 минут, чтобы принять ваш ответ! – Engine

+0

Добро пожаловать! Нет проблем с ожиданием, вы можете проверить пример кода в среднее время. – Shomz

1

Вы можете использовать только el.value

var output = document.getElementById('output'); 

function GetSelectedItem(el) { 
    output.innerHTML = el.value; 

    if (el.value == "Input") { 
     alert(el.value); 
    } else if(el.value == "Output") { 
     alert(el.value); 
    } 
} 

Example

1

Не использовать == для Comparision, а использовать === как один проверяет только значения и другие проверки для значения и типа.

Я хотел бы написать функцию, как это:

<script> 
function GetSelectedItem(el) { 
    var output = document.getElementById('output'); 
    output.innerHTML = el.value; 
    if(el.value === "Input") 
    { 
     *** do stuff *** /// 
    } 
    else if(el.value === "output") 
    { 
    ** do stuff2 *** 
    }  
} 
</script> 
+1

Как правило, это хороший совет, но не такой важный здесь, потому что нет ничего, что могло бы дать разные результаты между двумя сравнениями по сравнению со строковыми литералами, такими как OP в вопросе. Я имею в виду, что нет другого типа, кроме строки, которая может быть оценена, например, «Вход», правильно? Если бы это была пустая строка или что-то в этом роде, то да, вещи могли бы стать сложными с простым сравнением по значению. :) – Shomz

+0

Это смешно. Вы никогда не должны использовать == в кодировке javascript. Подробнее см. Здесь: http://stackoverflow.com/questions/359494/does-it-matter-which-equals-operator-vs-i-use-in-javascript-comparisons – kheya

+0

Прежде чем говорить что-то смешное, подумайте. Прочитайте ответы на эту ссылку, затем внимательно прочитайте мой комментарий.Затем внимательно прочитайте эти ответы, особенно эту часть и ниже: «Особый случай - когда вы сравниваете литерал с объектом, который оценивается в один и тот же литерал, из-за его метода toString или valueOf. Например, рассмотрим сравнение строкового литерала со строковым объектом, созданным конструктором String. ' – Shomz

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