2015-11-01 5 views
0

Я пытаюсь создать радиолюбитель 5 звезд.Динамически, проверьте радиокнопку с петлей

Это одна из радиокнопок:

<input onclick="check(3)" type="radio" name="three" id="num_3_star" value="3"> 

После того, как метод вызывается и «3» передается это мой Javascript функция:

function check(stars) 
{ 
    for(i = 0 ; i < stars; i++) 
    {  
     document.getElementById("num_" + stars + "_star").checked = true; 
    } 
} 

Когда я запускаю код , он не выполняет check to = true, хотя, если удалить цикл for, он работает нормально.

Любые идеи, почему петля for не позволяет проверять радиокадры?

Это весь мой код:

<script> 
function check(stars) 
{ 
    for(i = 0 ; i < stars; i++) 
    {  
     document.getElementById("num_" + stars + "_star").checked = true; 
    } 
} 
</script> 

<form> 
<input onclick="check(1)" type="radio" name="one" id="num_1_star" value="1"> 
<input onclick="check(2)" type="radio" name="two" id="num_2_star" value="2"> 
<input onclick="check(3)" type="radio" name="three" id="num_3_star" value="3"> 
<input onclick="check(4)" type="radio" name="four" id="num_4_star" value="4"> 
<input onclick="check(5)" type="radio" name="five" id="num_5_star" value="5"> 
</form> 

Спасибо!

+0

Они должны быть с таким же именем для радио кнопок buttons..Radio не является идеальным элемент здесь! – Rayon

+0

Изменение имени не помогает. Я использую радиокнопку для программирования. :) Я уверен, что есть много других способов сделать это. –

+0

Можете ли вы предоставить скрипку или весь свой код? – Rayon

ответ

2

i должен был быть первоначально как ids начинают с

также сбросить все checked состояние, когда щелчок инициирован! Используйте i вместо stars в getElementById

Попробуйте это:

function check(stars) { 
 

 
    for (var j = 1; j <= 5; j++) { 
 
\t document.getElementById("num_" + j + "_star").checked = false; 
 
    } 
 
    for (var i = 1; i <= stars; i++) { 
 
    document.getElementById("num_" + i + "_star").checked = true; 
 
    } 
 
}
<input onclick="check(1)" type="radio" name="one" id="num_1_star" value="1"> 
 
<input onclick="check(2)" type="radio" name="two" id="num_2_star" value="2"> 
 
<input onclick="check(3)" type="radio" name="three" id="num_3_star" value="3"> 
 
<input onclick="check(4)" type="radio" name="four" id="num_4_star" value="4"> 
 
<input onclick="check(5)" type="radio" name="five" id="num_5_star" value="5">

+1

Отлично! Это была проблема mas ... Она была инициализирована 0, и это должно было быть 1. Спасибо брату :) + Спасибо за дополнительный код, который мне не хватало. Хотел разобраться в себе, но хорошо, хахаха. Я просто публикую здесь, когда я полностью исчерпал xD –

+2

@MichaelOrtiz, также ключевое значение - передать параметр как 'i' вместо 'stars' в document.getElementById ("num_" + i + "_star") –

+0

Oh hahaha bummer , Это была главная причина. Сейчас я чувствую себя таким немым. Спасибо за подсказку –

1

Поместить var перед переменной итерации i. Вы создаете глобальную переменную.

+0

Не ответ, но он тоже отсутствовал ... –

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