2015-11-01 80 views
0

我試圖創建一個5星無線電選擇器。動態檢查與循環單選按鈕

這是單選按鈕的1:方法被調用和

<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; 
    } 
} 

當我運行的代碼,它不會執行checked 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代替starsgetElementById

試試這個:

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

完美!這是麻煩的問題...它被初始化爲0,它應該是1.謝謝兄弟:) +感謝我錯過了額外的代碼。想自己弄清楚,但哦,哈哈哈。當我完全疲憊時,我只是在這裏張貼xD –

+2

@MichaelOrtiz,關鍵還是,在document.getElementById(「num_」+ i +「_star」)中將參數傳遞爲'i'而不是'stars' –

+0

Oh haha​​ha bummer 。這是主要原因。我現在感覺非常愚蠢。感謝提示 –

1

在迭代變量i之前放置var。您正在創建一個全局變量。

+0

不是答案,但是也錯過了... –