Javascript 新手:检查表单初始化时是否选中了单选按钮。这个代码是什么意思?

Javascript 新手:检查表单初始化时是否选中了单选按钮。这个代码是什么意思?,javascript,Javascript,我是一个javascript新手。我正在尝试构建一个复杂的表单,同时学习JS和JQ。。。这不是一项容易的任务。这段代码可以工作,但我不知道这两行代码的作用,所以我想我应该在这里问一下 这段代码的作用是在数组中循环,查看单选按钮复选框是否被选中为是或否。当用户重新访问他/她正在填写的表单时,它会在初始化时运行。代码附加到一个textfield元素,如果myRadioButton为yes,该元素将取消隐藏,如果为no,则保持隐藏 我不知道第5行和第6行是做什么的(从第二个if语句开始)。请一些知识渊

我是一个javascript新手。我正在尝试构建一个复杂的表单,同时学习JS和JQ。。。这不是一项容易的任务。这段代码可以工作,但我不知道这两行代码的作用,所以我想我应该在这里问一下

这段代码的作用是在数组中循环,查看单选按钮复选框是否被选中为是或否。当用户重新访问他/她正在填写的表单时,它会在初始化时运行。代码附加到一个textfield元素,如果myRadioButton为yes,该元素将取消隐藏,如果为no,则保持隐藏

我不知道第5行和第6行是做什么的(从第二个if语句开始)。请一些知识渊博的人,像在教程中那样,把这些台词转录成几个句子,好吗?我会非常感激的

var rbVal = "";
var rbBtn =  JQuery("[name=\"myRadioButton[]\"]");
for (var i = 0; i < rbBtn.length; i++)
 if (rbBtn[i].checked) {
  if (rbVal != "") rbVal += ",";
   rbVal += rbBtn[i].value;
 }
if( rbVal != "yes" ){
  doSomething;
  } 
 else {
  doSomethingElse;
  }
var rbVal=”“;
var rbBtn=JQuery(“[name=\”myRadioButton[]\“]”);
对于(变量i=0;i
该代码正在检查具有共享名称的所有单选按钮
myRadioButton[]
,以确保如果选中一个单选按钮,其值将添加到以逗号分隔的
rbVal
字符串中


var rbBtn=JQuery(“[name=\”myRadioButton[]\“]”)第5行将
rbVal
的值与空字符串(
)进行比较。如果
rbVal
与空字符串不相等(
!=
),则包含逗号字符的字符串将附加到
rbVal
。例如,如果
rbVal
包含字符串“hello”,那么在执行该行之后,它将包含“hello”

然后,第6行将
rbBtn[i]的值追加到
rbVal
rbBtn
是一个类似数组的对象(事实上,它似乎是一个jQuery实例,包含选择器匹配的内容),当您使用这样的数组语法访问jQuery对象时,您会得到实际的DOM元素,而不是另一个jQuery对象,因此
value
属性是DOM元素的实际
value
属性(从外观上看,这将是一个单选按钮)

如果你有这样一个单选按钮:

然后循环将导致
rbVal==“someVal”

如果您有两个单选按钮:

<input type="radio" value="someVal">
<input type="radio" value="anotherVal">


然后您将得到
rbVal==“someVal,anotherVal”
。从中可以看出该循环的总体目的是什么——构建一个由jQuery选择器匹配的所有单选按钮的值组成的逗号分隔字符串。

奇怪的是,这是使用jQuery获取单选按钮和一些普通JavaScript来查看返回的单选按钮是否被选中

  • var rbVal=”“使用空字符串初始化新变量
    “”

  • var rbBtn=JQuery(“[name=\”myRadioButton[]\“]”)
    从文档中获取所有名为
    myRadioButton[]
    的元素

  • for(var i=0;i
    循环遍历每个返回的元素(可能有多个as
    myRadioButton[]
    是一个单选按钮数组,因此最后是
    []
    i
    是返回元素数组中的当前索引

  • if(rbBtn[i].checked)
    查看单选按钮是否已“选中”(“打开”,如果愿意)

  • rbVal+=rbBtn[i]。值
    :如果选中了当前单选按钮(记住,
    for()
    循环遍历所有按钮),则获取它的
    属性并将其附加(添加到)当前位于
    rbVal
    中的任何内容。 例如,如果
    rbVal
    包含
    Hello
    且单选按钮的值为
    world
    ,则
    rbVal
    最终将包含
    Hello world

  • if(rbVal!=“yes”)
    如果
    rbVal
    中的值不等于(
    !=
    yes
    ,则我们调用
    doSomething
    函数

  • 如果
    rbVal
    确实包含
    yes
    ,那么我们要调用
    doSomethingElse
    函数:

    else {
        doSomethingElse;
    }
    

哇!反应的速度令人难以置信,而且非常深入。非常感谢!James Allardice,我特别感谢你进一步解释DOM信息。谢谢虽然您的回答非常有用,但我对整个rbVal变量感到困惑。在我看来,将rbBtn附加到rbVal后,结果总是会出现“是”或“否”(myRadioButton的两个值)以外的结果。因此,在上面的类比中,
rbVal==“someVal,anotherVal”
永远不会导致rbVal出现简单的是或否。您(或某人)愿意详细说明吗?