Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么此函数会导致错误?_Javascript_Html - Fatal编程技术网

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) {

下面是一个函数,用于将用户选择的单选按钮的值从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)
       {
           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++)