2012-01-06 55 views
7

我想檢查收音機將自動按鈕:我想這個代碼,但它不工作: 單選按鈕有三個不同的價值觀,我想選擇與價值的單選按鈕「乾淨」自動JavaScript的檢查單選按鈕

如何?!我可以檢查自動單選按鈕在網頁上 感謝

function getElements() 
    { 

    for (i=0; i<document.getElementsByTagName('input').length; i++) 
    { 
    //if (document.getElementsByTagName('input')[i].type == 'radio') 
    if(document.getElementsByTagName('input')[i].type=='radio') 
    { 
     //if (document.getElementsByTagName('input')[i].value=='clean') 
     document.getElementsByTagName('input')[i].click(); 
    } 
    } 

我修改了代碼如下:

for (i=0; i<document.getElementsByTagName('input').length; i++) 
    { 

    if(document.getElementsByTagName('input')[i].type=='radio') 
    { 


     if(document.getElementsByTagName('input')[i].value == "clean") 
     { 
     document.getElementsByTagName('input')[i].checked =true; 
     } 

    } 
    } 

但它仍然不工作:(

單選按鈕在iframe中,它可以是代碼不工作的原因嗎?

+1

是的,我知道萬歲的,和你的代碼是令人敬畏的,但我努力使它的工作不是因爲你的錯,但它是我的或我的知識不足。我會接受你的回答! – 2012-01-06 19:14:08

+0

是的問題是iframe和我糾正,一切工作正常您的代碼曼塞非常感謝,你是我的男人! – 2012-01-06 20:06:19

回答

14

給你的單選按鈕 「名稱」 會使事情更容易

<input type="radio" name="myradios" value="clean"/> 
<input type="radio" name="myradios" value="somethingelse"/> 

var elements = document.getElementsByName('myradios'); 
for (i=0;i<elements.length;i++) { 
    if(elements[i].value == "clean") { 
    elements[i].checked = true; 
    } 
} 

工作例如:http://jsfiddle.net/Dwzc9/

更新

getElementsByName似乎並沒有在所有的IE瀏覽器的支持版本...所以你可以根據你原來的例子使用以下內容:

var allElems = document.getElementsByTagName('input'); 
for (i = 0; i < allElems.length; i++) { 
    if (allElems[i].type == 'radio' && allElems[i].value == 'clean') { 
     allElems[i].checked = true; 
    } 
} 

工作示例:http://jsfiddle.net/Dwzc9/2/

+0

Manse你的代碼正在工作,但問題是iFrame我認爲。或者別的,因爲我不能成功運行它。 – 2012-01-06 19:36:19

3

您可以嘗試設置「checked」屬性。

var getElements = function() 
{ 
    var x = document.getElementsByTagName("input"); 
    var oldname = ''; 

    for(var i = 0; i < x.length; i++) 
    { 
     if(x[i].type == 'radio' && x[i].name != oldname && x[i].value == 'clean') 
     { 
      x[i].checked = true; 
      oldname = x[i].name; 
     } 
    } 
}; 

具有這種功能的問題是,從每個組將被選擇它會嘗試檢查所有的單選按鈕,因此,如果它們屬於一個組(其通常是這種情況),則只有最後的單選按鈕。如果這是你的意圖,那麼很好,否則它會考慮如何決定選擇哪個按鈕,並打破循環。你可以在上面的函數中看到,我決定只選擇組中的第一個按鈕,通過檢查元素的name屬性。

我希望這可以幫助你!

  • 馬特

UPDATE

另一種方式來處理這個問題,使用jQuery,將是:

var getElements = function(){ 
    var oldname = ''; 
    $.each($('input[type="radio"]'), function(){ 
    if($(this).attr('name') != oldname && $(this).val() == 'clean'){ 
     $(this).checked = true; 
     oldname = this.name; 
    } 
    }); 
}; 
+1

這將打勾頁面上每個組的單選按鈕? OP只想檢查它們是否具有「乾淨」的值 – ManseUK 2012-01-06 19:01:08

+0

它應該。 name屬性是html單選按鈕是如何「分組的」。「同名的每個按鈕都在一個組中 – Matt 2012-01-06 19:03:21

+0

OH,我誤讀了這個問題,我會糾正這個問題 – Matt 2012-01-06 19:04:00