JavaScript阵列与HTML无线电盒有关



我有一个关于数组的基本JS问题。

我似乎无法围绕以下代码包裹大脑。我了解您需要以下代码才能使该程序了解其已检查,但是有人可以通过线路行带我走吗?...

	var sex = document.getElementsByName("sex");
		var sex_value = "";
        //here is where my confusion starts 
		for (var i=0; i < sex.length; i++)
		{
			if (sex[i].checked)
				sex_value = sex[i].value;
		}
       // where my confusion ends 
		if(sex_value == 0)
		{
			alert("What is your sex?...");
			return false;
		}
// buttons and what not go here
	<input type="radio" name="sex" value="male">Male
	<input type="radio" name="sex" value="female">Female

与当前一样,每当页面加载时,您将始终看到"您的性别是什么?..."警报,因为在页面加载中都没有选择任何复选框。如果将checked添加到一个无线电输入元素中,则在页面加载上,sex_value变量应包含相应的checked输入元素的值。

这是线条评分的代码。

// Gets all elements on the page that have a name="sex"
var sex = document.getElementsByName("sex");
// Sets a blank string to be updated later (or remain blank)
var sex_value = "";
// This loop runs through all of the [name="sex"] elements
for (var i=0; i < sex.length; i++)
{
    // If the value is selected, set sex_value to the value of the input
    if (sex[i].checked)
        sex_value = sex[i].value;
}
// Really should be if( sex_value === '' )
if(sex_value == 0)
{
    alert("What is your sex?...");
    return false;
}

这是您设置checked元素时发生的情况:http://jsfiddle.net/529kx4co/

var sex = document.getElementsByName("sex");

此处sexname="sex"定义的DOM元素的集合。

和这个:

for (var i=0; i < sex.length; i++)
    {
        if (sex[i].checked) {
            sex_value = sex[i].value;
            break;
        }
    }

is:对于该集合中的每个DOM元素,检查是否检查了元素。如果是这样获取其值属性并将其分配给sex_value变量。

该值将是整个广播组的值(输入的收集|具有相同名称的无线电)。

最新更新