Javascript 新手:检查表单初始化时是否选中了单选按钮。这个代码是什么意思?
我是一个javascript新手。我正在尝试构建一个复杂的表单,同时学习JS和JQ。。。这不是一项容易的任务。这段代码可以工作,但我不知道这两行代码的作用,所以我想我应该在这里问一下 这段代码的作用是在数组中循环,查看单选按钮复选框是否被选中为是或否。当用户重新访问他/她正在填写的表单时,它会在初始化时运行。代码附加到一个textfield元素,如果myRadioButton为yes,该元素将取消隐藏,如果为no,则保持隐藏 我不知道第5行和第6行是做什么的(从第二个if语句开始)。请一些知识渊博的人,像在教程中那样,把这些台词转录成几个句子,好吗?我会非常感激的Javascript 新手:检查表单初始化时是否选中了单选按钮。这个代码是什么意思?,javascript,Javascript,我是一个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
循环遍历每个返回的元素(可能有多个asmyRadioButton[]
是一个单选按钮数组,因此最后是[]
)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出现简单的是或否。您(或某人)愿意详细说明吗?