Javascript 为什么此函数会导致错误?
下面是一个函数,用于将用户选择的单选按钮的值从html文件获取到我的javascript文件中:Javascript 为什么此函数会导致错误?,javascript,html,Javascript,Html,下面是一个函数,用于将用户选择的单选按钮的值从html文件获取到我的javascript文件中: function getRadioCheckedValue(radio_name) { var oRadio = document.forms[0].elements[radio_name]; for(var i = 0; i < oRadio.length; i++) { if(oRadio[i].checked) {
function getRadioCheckedValue(radio_name)
{
var oRadio = document.forms[0].elements[radio_name];
for(var i = 0; i < oRadio.length; i++)
{
if(oRadio[i].checked)
{
return oRadio[i].value;
}
}
return '';
}
for(var i = 0; i < oRadio.length; i++)
可以使用jQuery执行此操作:
for(var i = 0; i < oRadio.length; i++)
var pizzaSize = $(":radio[name=optionsRadios]:checked").val();
代码失败的原因是页面上有多个表单:一个表单表示大小,另一个表单表示酱汁,等等。文档。表单[0]
只在第一个表单中查找,因此如果试图从其他表单中获取单选按钮,它将找不到它。 for(var i = 0; i < oRadio.length; i++)
$(".step-1").show();
$("form#size").submit(function(event) {
var pizzaSize = getRadioCheckedValue("optionsRadios");
$(".my-size").text(pizzaSize);
$(".step-1").hide();
$(".step-2").show();
event.preventDefault();
});
$("form#sauce").submit(function(event) {
var sauce = getRadioCheckedValue("sauceRadios");
$(".step-2").hide();
$(".step-3").show();
event.preventDefault();
});
function getRadioCheckedValue(radio_name) {
var group = document.getElementsByName(radio_name);
for (var i = 0; i < group.length; i++) {
if (group[i].checked == true) {
return group[i].value;
}
}
}
出现错误的原因是,您将其中一个单选按钮命名为“sauceRadios”,而另两个则称为“sauceRadios”。因为只有一个单选按钮与您使用的名称对应,所以返回的是单个节点,而不是节点列表
for(var i = 0; i < oRadio.length; i++)
编辑否,Barmar是对的,您总是只查看页面上的第一个表单。包括您的HTML,以及如何调用此函数来回答问题,您会遇到此错误,可能是因为oRadio变量不是数组。@LeoCHan此错误表示
oRadio
未定义,是的,它不是一个数组:)好的,我已经包含了HTML以及我在javascript中调用函数的地方。为什么第一次有效,第二次不行?第二次还将sauceRadios=Alfredo保留在URL栏的末尾。按照Barmar的回答,您已经在使用jQuery了,也可以使用它。还有一件事-您的第一台酱汁收音机似乎输入了一个错误的名称:saucesroids
谢谢,用它来制作我的酱汁已经修复了它。我想知道为什么,即使我用你的方法得到比萨饼的尺寸,我仍然不能用sauce=getRadioCheckedValue(“sauceRadios”);不破坏它。我想OP会发现,由于标记中的问题,这也不起作用。@user3169700非常仔细地查看“sauce”单选按钮的HTML。不,这个函数有些奇怪。@user3169700查看“sauce”单选按钮的名称属性!!嗯,也许不是;这可能只是一个转录错误(我想我永远都不会理解)。哦,我在中间发布了更改内容,修复了无法修复函数的问题,尽管Sean Wessell的Didith修复了函数,谢谢,您是如何发现的?当您使用put javascript时,您将从文档中返回节点或节点列表。节点是单个元素。节点列表是元素的集合。您试图从表单返回按名称找不到的form.elements。它们是通过索引找到的。关于jQuery def,请查看选择器和伪类选择器。
for(var i = 0; i < oRadio.length; i++)