我们如何使用DOM访问单选按钮的值?
例如,我们有以下单选按钮:
<input name="sex" type="radio" value="male">
<input name="sex" type="radio" value="female">
他们在一个名为form1
的表单内。当我尝试
document.getElementByName("sex").value
它无论选中的值是什么,始终返回“male”。
我们如何使用DOM访问单选按钮的值?
例如,我们有以下单选按钮:
<input name="sex" type="radio" value="male">
<input name="sex" type="radio" value="female">
他们在一个名为form1
的表单内。当我尝试
document.getElementByName("sex").value
它无论选中的值是什么,始终返回“male”。
只是为了“泛化”Canavar非常有帮助的函数:
function getRadioValue(theRadioGroup)
{
var elements = document.getElementsByName(theRadioGroup);
for (var i = 0, l = elements.length; i < l; i++)
{
if (elements[i].checked)
{
return elements[i].value;
}
}
}
...现在将如此引用:
getRadioValue('sex');
奇怪的是这样的东西还没有成为prototype.js的一部分。
如果你需要选中一个元素,大多数框架都支持类似以下的功能:
//jQuery
$("input[name='sex']:checked").val()
:checked
,还要注意的是,两个单选按钮都未被选择的情况下,val() 调用将会失败。 - bobince有几种方式可以实现。
<input name="sex" id="sex_male" type="radio" value="male">
<input name="sex" id="sex_female" type="radio" value="female">
那么你可以使用 document.getElementById("sex_male")
然后你可以像这样做:
//This loops over all input elements that have a name of "sex"
$$('input[name="sex"]').each( function(elem) {
//Do something
});
甚至可以这样做,只选取“男性”单选按钮:
$$('input[name="sex"][value="male"]').each(function(elem) {
//Do something
});
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js"></script>
<script>
function getRadioValue()
{
for (var i = 0; i < document.getElementsByName('sex').length; i++)
{
if (document.getElementsByName('sex')[i].checked)
{
return document.getElementsByName('sex')[i].value;
}
}
}
</script>
for (var i = 0; i < document.form1.sex.length; i++) {
if (document.form1.sex[i].checked) alert(document.form1.sex[i].value);
}
document.form1.sex
,则会返回一个数组。
document.form1.sex[0]
= 第一个单选按钮
document.form1.sex[1]
= 第二个单选按钮whoChecked(document.form1.sex)
function whoChecked(fieldName) {
for(var x=0;x<fieldName.length;x++) {
if(fieldName[x].checked) {
return fieldname[x].value
}
}
var list = document.getElementsByName('sex');
for(var i=0;i<list.length;i++){
if(list[i].type=='radio' && list[i].checked){
alert(list[i].value);
break;
}
}
document.getElementByName("sex").value
getElementsByName('sex')[0].value
吗?(没有 getElementByName
。)var sex= document.getElementsByName("sex")[0].checked? 'male' : 'female';
对于一般情况,您需要循环遍历每个单选框以查看哪个被选中。最好先获取表单对象(在表单上放置一个id并使用document.getElementById
通常比使用基于“name”的document.forms集合更好),然后访问form.elements.sex以获取列表,以防页面上有任何其他具有name="sex"
属性的元素(可能是表单字段之外的其他内容)。
function getEleByName(){
if(true==document.getElementsByName('gender')[0].checked){
alert('selected gender is: male');
}
else{
alert('selected gender is: female');
}
}
document.getElementsByName
(而不是 N+2 次),并将其分配给循环外的本地变量。 - Thilo