2012-01-06 144 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