2012-11-07 23 views
0

也許這是非常基本的,但我有radios.length屬性的一些問題。我有這樣的輸入:radios.length問題 - java腳本

<input type="radio" name="name1" value="test1" checked='checked'/><br /> 
<input type="radio" name="name2" value="test2" checked='checked'/><br /> 

當我提醒radios.length屬性,我總是有0作爲答案。有人能解釋爲什麼嗎?

+1

你在哪裏得到來自'radios'?這是在其他地方設置的變量嗎?或者你只是在做原始的JavaScript? –

+0

我正在嘗試使用原始javascript – user1611830

+0

原始javascript中沒有'radios'變量。您需要查詢DOM以獲取元素列表 –

回答

1

radios.length是不是在DOM有效的屬性.. 您需要找到那些(這是在這種情況下輸入),然後使用length屬性就可以了..

var radios = document.getElementsByTagName("input") ; 

alert(radios.length) // this will alert the correct value 

UPDATE

只選擇單選按鈕,你可以做到這一點

var radios = document.getElementsByTagName("input") ; 
var checkBoxes = []; 

for(​var i =0, len = radios.length; i< len;i++){ 
    if(radios[i].type === 'radio'){ 
     checkBoxes.push(radios[i]); 
    } 
}; 

console.log(checkBoxes)​ 

Check Fiddle

此外,如果你正在使用jQuery不要忘記包住你的腳本DOM已準備就緒處理

jQuery的

$('#radio1').attr('type') // Need to use the .attr() method 

jQuery Fiddle

+0

但是,只有在沒有其他輸入元素(如文本字段,密碼字段或提交按鈕)的情況下,這纔是真實的。 –

+0

是的,它的工作,但如果我發出警報(輸入[0] .type),我指定輸入[0]指第一個輸入,我再次顯示0。這對你來說意味着什麼? – user1611830

+0

什麼是輸入? ..如果輸入表示輸入元素,那麼沒有先選擇標記名稱,那麼你不能這樣做 –

1

radios在瀏覽器中不是有效的對象。您需要搜索DOM的inputs

使用jQuery:

$("input[type=radio]").length 

會給你2

在原始的JavaScript,你可以這樣做:

document.getElementsByTagName("input") 

但這可能給你所有<input>元素。