Javascript 显示和隐藏按钮的另一种方法
如果在驱动器上本地运行文件,则以下代码可以正常工作。不幸的是,我需要将此表单上载到名为MasterControl的软件。它不起作用。我想知道是否有另一种通用于本地的编码方式,以及上传到MasterControl服务器的方式 此代码的目的是-一旦您单击第一级问题上的“是”按钮,则会出现下一级问题。如果单击第一级上的“否”按钮,并且如果显示下一级问题中的问题,则将清除所有选定按钮并隐藏第二级问题的部分 代码如下: HTML代码:Javascript 显示和隐藏按钮的另一种方法,javascript,jquery,html,Javascript,Jquery,Html,如果在驱动器上本地运行文件,则以下代码可以正常工作。不幸的是,我需要将此表单上载到名为MasterControl的软件。它不起作用。我想知道是否有另一种通用于本地的编码方式,以及上传到MasterControl服务器的方式 此代码的目的是-一旦您单击第一级问题上的“是”按钮,则会出现下一级问题。如果单击第一级上的“否”按钮,并且如果显示下一级问题中的问题,则将清除所有选定按钮并隐藏第二级问题的部分 代码如下: HTML代码: <div id="divDeathOccurred" clas
<div id="divDeathOccurred" class="fieldRow">
<div class="leftLabel labelWidth22">
<label for="">A. Has a death occurred?</label>
</div>
<div class="leftField">
<div class="formField34">
<input id="rbDeathOccurred" name="rbDeathOccurred"
type="radio" class="radiobuttonfield" title="Death Occurred"
value="Yes" onclick="javascript:USAYesNoCheckDO();" />Yes
<input id="rbDeathOccurred" name="rbDeathOccurred"
type="radio" class="radiobuttonfield" title="Death Occurred"
value="No" onclick="javascript:USAYesNoCheckDO();" />No
</div>
</div>
<p> </p>
<div id="USADOYesNo" style="display:none">
<ol type="1" class="indentList">
<li>Is there a reasonable possibility that a device failure
or malfunction was a direct or indirect factor in the death?
<br>
<input id="rbDOYesNo" name="rbDOYesNo" type="radio"
class="USDO radiobuttonfield" title="Yes Reportable" value="Yes"
onclick="javascript:USDeviceFailure30Days();" />
<label for="rbDOYesNo" class="rptColor">Yes -
reportable</label>
<input id="rbDOYesNo" name="rbDOYesNo" type="radio"
class="USDO1 radiobuttonfield" title="No" value="No"
onclick="javascript:USDeviceFailure30Days();" />No - No
Report
<div id="calc" class="indentListCalc">
<input id="dt30Days3" type="text" class="textfieldCalc
labelWidth25" alt="Device Malfunction" />
</div>
<p></p>
</li>
<li>Is there a reasonable possiblity that a device design
defect was direct or indirect factor in the death?
<br>
<input id="rbDOYesNo1" name="rbDOYesNo1" type="radio"
class="USDO2 radiobuttonfield" title="Yes Reportable" value="Yes"
onclick="javascript:USDeviceDesign30Days();"/>
<label for="rbDOYesNo1" class="rptColor">Yes -
Reportable</label>
<input id="rbDOYesNo1" name="rbDOYesNo1" type="radio"
class="USDO3 radiobuttonfield" title="No" value="No"
onclick="javascript:USDeviceDesign30Days();" />No - No Report
<div id="calc1" class="indentListCalc">
<input id="dt30Days1" type="text" class="textfieldCalc
labelWidth25" alt="Device Design" />
</div>
<p></p>
</li>
<li>Is there a reasonable possiblity that the device
labeling was direct or indirect factor in the death?
<br>
<input id="rbDOYesNo2" name="rbDOYesNo2" type="radio"
class="USDO4 radiobuttonfield" title="Yes Reportable"
value="Yes" onclick="javascript:USDeviceLabeling30Days();"/>
<label for="rbDOYesNo2" class="rptColor">Yes -
Reportable</label>
<input id="rbDOYesNo2" name="rbDOYesNo2" type="radio"
class="USDO5 radiobuttonfield" title="No" value="No"
onclick="javascript:USDeviceLabeling30Days();"/>No - No Report
<div id="calc2" class="indentListCalc">
<input id="dt30Days2" type="text" class="textfieldCalc
labelWidth25" alt="Device Labeling" />
<p></p>
</div>
</li>
</ol>
</div>
</div> <!-- final section Death Occurred end -->
我仍在学习所有这些HTML、Javascript,我刚刚开始使用JQuery
如果您需要我将这些代码放入JSFIDLE,请告诉我
非常感谢你
艾琳
更新:
我忘了补充一点,当您选择按钮以及显示和隐藏时,代码在服务器上起作用-唯一不起作用的是清除所选按钮
再次感谢你
更新2:
经过几个小时的研究,并试图学习Jquery,希望它能给我另一种方法来解决这个问题,并让它在服务器上工作,不幸的是它没有。我之所以尝试Jquery,是因为我正在查看MasterControl服务器上的其他表单,它们是用Jquery编码的。不幸的是,作为Jquery的初学者,我无法让它在本地驱动器和服务器两方面都工作。请有人检查一下,看看我遗漏了什么或做错了什么
function getChecked(radioGroupName, index)
{
var oRadioList = document.getElementsByName(radioGroupName);
return oRadioList[index].checked;
}
function setChecked(radioGroupName, index, state)
{
var oRadioList = document.getElementsByName(radioGroupName);
oRadioList[index].checked = state;
}
function USAYesNoCheckDO()
{
if(getChecked("rbDeathOccured",0) == true)
{
$('#USADOYesNo').slideDown(1000);
}
else
{
$('#USADOYesNo').slideUp(1000);
setChecked("rbDOYesNo",0,false);
setChecked("rbDOYesNo",1,false);
setChecked("rbDOYesNo1",0,false);
setChecked("rbDOYesNo1",1,false);
setChecked("rbDOYesNo2",0,false);
setChecked("rbDOYesNo2",1,false);
}
}
或者如果你知道如何解决这个问题。正如我在前面提到的,按钮起作用,问题的显示和隐藏起作用,问题是当我想重置并将其设置回原始状态-空白时
再次感谢您的帮助
艾琳
更新3:
请大家对如何解决这个问题有任何想法/想法
我真的很感谢你的帮助
谢谢,
艾琳
更新4:
万一有人和我有同样的问题,需要一个解决方案,经过这么长时间的搜索,我终于找到了一个网站,这个网站给了我答案,它工作了!是啊!我只是根据自己的需要定制了编码,它可以在本地和服务器上工作
IreneS。您对多个元素使用相同的
id
属性id
在页面上应该是唯一的,只有name
可以是相同的,以便对相同类型的多个输入元素进行分组。我不知道这是否是主要问题,但这是一个开始。将其放在JSFIDLE中。我们帮助你容易多了。我不是100%地理解这个问题。在我看来,您的问题在于,当您通过名为MasterControl的程序将代码上载到服务器时,代码不起作用?不管怎样,我测试了你的代码,看起来它应该正常工作。你的编码方式是通用的。我们无法真正解决您用来上传代码的应用程序的问题,也无法解决它的运行问题。第二段很混乱,我不明白它应该如何工作。如果第二级仅在选择“是”时显示,为什么在选择“否”时隐藏第二级。用户更改选项时是否考虑到这一点?此表单是否应该循环返回到开始,而不使用提交按钮?Macovei,我为混淆道歉。第一个问题是要求用户单击是或否。如果用户单击否,则不会发生任何事情,也不会显示任何内容,用户将进入下一部分。如果用户单击yes,则会出现下一组问题,用户需要回答这些问题。到目前为止,无论是在本地还是在服务器上,一切都正常。不正常的情况是,万一用户单击“是”,出现下一组问题,用户再次单击“是”或“否”,然后意识到他们应该在第一个问题上单击“否”,如果他们单击“否”,则第二级问题的所有单击按钮应重置并重新隐藏。按钮复位不起作用。我希望这有助于澄清我正在努力解决的问题。Macavi-我知道id必须是唯一的,但不幸的是,这个特定的软件要求按钮的id必须相同,否则它将无法上传。这就是为什么我使用类名而不是id使其唯一。
function getChecked(radioGroupName, index)
{
var oRadioList = document.getElementsByName(radioGroupName);
return oRadioList[index].checked;
}
function setChecked(radioGroupName, index, state)
{
var oRadioList = document.getElementsByName(radioGroupName);
oRadioList[index].checked = state;
}
function USAYesNoCheckDO()
{
if(getChecked("rbDeathOccured",0) == true)
{
$('#USADOYesNo').slideDown(1000);
}
else
{
$('#USADOYesNo').slideUp(1000);
setChecked("rbDOYesNo",0,false);
setChecked("rbDOYesNo",1,false);
setChecked("rbDOYesNo1",0,false);
setChecked("rbDOYesNo1",1,false);
setChecked("rbDOYesNo2",0,false);
setChecked("rbDOYesNo2",1,false);
}
}