Javascript 生成HTML表单
我正在尝试使用HTML表单和一些JavaScript执行以下操作: 选中该复选框时,会动态生成两个单选按钮,并显示“选中复选框1”的文本 该逻辑(见JSFIDLE:)确实有效,但由于某些原因,无法选择这两个单选按钮。当我点击任意一个单选按钮时,什么也没发生。如果你们中的任何人能对我可能做错的事情提供一些意见,我将不胜感激 注意:序列在JSFIDLE上似乎不起作用(单选按钮确实是动态生成的),但在我的工作站上起作用 HTML代码:Javascript 生成HTML表单,javascript,innerhtml,radio,Javascript,Innerhtml,Radio,我正在尝试使用HTML表单和一些JavaScript执行以下操作: 选中该复选框时,会动态生成两个单选按钮,并显示“选中复选框1”的文本 该逻辑(见JSFIDLE:)确实有效,但由于某些原因,无法选择这两个单选按钮。当我点击任意一个单选按钮时,什么也没发生。如果你们中的任何人能对我可能做错的事情提供一些意见,我将不胜感激 注意:序列在JSFIDLE上似乎不起作用(单选按钮确实是动态生成的),但在我的工作站上起作用 HTML代码: <form name="input" action="" m
<form name="input" action="" method="get">
<input type="checkbox" name="sequenceOP" id="sequenceOP14" onChange="displaySequence()">
Checkbox 1<br/>
<div id="displayText"></div>
<div id="variableSpdExhOptions"></div>
</form>
复选框1
JavaScript:
function displaySequence(){
var displayVariableExhOptions = "";
var displayText = "";
if(sequenceOP14.checked){
displayText += "Checkbox 1 is checked";
displayVariableExhOptions += "<input type=\"radio\" name=\"exhOptions\" id=\"sequenceOP15\" onChange=\"displaySequence()\" >"
+ "Radio Box 1<br/>"
+ "<input type=\"radio\" name=\"exhOptions\" id=\"sequenceOP16\" onChange=\"displaySequence()\" >"
+ "Radio Box 2<br/>"
}
document.getElementById("variableSpdExhOptions").innerHTML = displayVariableExhOptions;
document.getElementById("displayText").innerHTML = displayText;
}
函数displaySequence(){
var displayVariableExhOptions=“”;
var displayText=“”;
如果(顺序OP14.选中){
displayText+=“复选框1已选中”;
displayVariableExhOptions+=“”
+“无线电信箱1
”
+ ""
+“无线电信箱2
”
}
document.getElementById(“variableSpdExhOptions”).innerHTML=displayVariableExhOptions;
document.getElementById(“displayText”).innerHTML=displayText;
}
以下是您的问题的修复方法:
基本上,错误在于您的JS被加载到domReady上,然后被丢弃
你想把它装进脑袋里
代码如下:
<head>
<script type="text/javascript">
//<![CDATA[
function ds() {
var displayVariableExhOptions = "";
var displayText = "";
if (document.input.sequenceOP14.checked) {
displayText += "Checkbox 1 is checked";
displayVariableExhOptions += "<input type=\"radio\" name=\"exhOptions\" id=\"sequenceOP15\" onChange=\"displaySequence()\" >" + "Radio Box 1<br/>" + "<input type=\"radio\" name=\"exhOptions\" id=\"sequenceOP16\" onChange=\"displaySequence()\" >" + "Radio Box 2<br/>"
}
document.getElementById("variableSpdExhOptions").innerHTML = displayVariableExhOptions;
document.getElementById("displayText").innerHTML = displayText;
}
</script>
</head>
<form name="input" action="" method="get">
<input type="checkbox" name="sequenceOP" id="sequenceOP14" onChange="ds();">
Checkbox 1<br/>
<div id="displayText"></div>
<div id="variableSpdExhOptions"></div>
</form>
//
复选框1
为了避免您担心ID,请让自己轻松一点:
<input type="checkbox" name="sequenceOP" id="sequenceOP14" onChange="ds(this);">
function ds(obj) {
var displayVariableExhOptions = "";
var displayText = "";
if (obj.checked) {
功能ds(obj){
var displayVariableExhOptions=“”;
var displayText=“”;
如果(对象已选中){
以下是您的问题的修复方法:
基本上,错误在于您的JS被加载到domReady上,然后被丢弃
你想把它装进脑袋里
代码如下:
<head>
<script type="text/javascript">
//<![CDATA[
function ds() {
var displayVariableExhOptions = "";
var displayText = "";
if (document.input.sequenceOP14.checked) {
displayText += "Checkbox 1 is checked";
displayVariableExhOptions += "<input type=\"radio\" name=\"exhOptions\" id=\"sequenceOP15\" onChange=\"displaySequence()\" >" + "Radio Box 1<br/>" + "<input type=\"radio\" name=\"exhOptions\" id=\"sequenceOP16\" onChange=\"displaySequence()\" >" + "Radio Box 2<br/>"
}
document.getElementById("variableSpdExhOptions").innerHTML = displayVariableExhOptions;
document.getElementById("displayText").innerHTML = displayText;
}
</script>
</head>
<form name="input" action="" method="get">
<input type="checkbox" name="sequenceOP" id="sequenceOP14" onChange="ds();">
Checkbox 1<br/>
<div id="displayText"></div>
<div id="variableSpdExhOptions"></div>
</form>
//
复选框1
为了避免您担心ID,请让自己轻松一点:
<input type="checkbox" name="sequenceOP" id="sequenceOP14" onChange="ds(this);">
function ds(obj) {
var displayVariableExhOptions = "";
var displayText = "";
if (obj.checked) {
功能ds(obj){
var displayVariableExhOptions=“”;
var displayText=“”;
如果(对象已选中){
在这里,您尚未访问DOM。您需要使用document.getElementById(“sequenceOP14”)
在这里,您尚未访问DOM。您需要使用document.getElementById(“sequenceOP14”)
您的“sequenceOP14”来自哪里
您需要将复选框传递给javascript函数,如下所示:
<input type="checkbox" name="sequenceOP" id="sequenceOP14" onChange="displaySequence(this)">
然后在javascript函数中:
function displaySequence(htmlCheckableElement){
if(typeof(htmlCheckableElement) == "undefined")
return;
var displayVariableExhOptions = "";
var displayText = "";
if(htmlCheckableElement.checked){
displayText += "Checkbox 1 is checked";
displayVariableExhOptions += "<input type=\"radio\" name=\"exhOptions\" id=\"sequenceOP15\" onChange=\"displaySequence()\" >"
+ "Radio Box 1<br/>"
+ "<input type=\"radio\" name=\"exhOptions\" id=\"sequenceOP16\" onChange=\"displaySequence()\" >"
+ "Radio Box 2<br/>"
}
document.getElementById("variableSpdExhOptions").innerHTML = displayVariableExhOptions;
document.getElementById("displayText").innerHTML = displayText;
}
}
函数显示顺序(htmlCheckableElement){
if(typeof(htmlCheckableElement)=“未定义”)
返回;
var displayVariableExhOptions=“”;
var displayText=“”;
if(htmlCheckableElement.checked){
displayText+=“复选框1已选中”;
displayVariableExhOptions+=“”
+“无线电信箱1
”
+ ""
+“无线电信箱2
”
}
document.getElementById(“variableSpdExhOptions”).innerHTML=displayVariableExhOptions;
document.getElementById(“displayText”).innerHTML=displayText;
}
}
您的“sequenceOP14”来自哪里
您需要将复选框传递给javascript函数,如下所示:
<input type="checkbox" name="sequenceOP" id="sequenceOP14" onChange="displaySequence(this)">
然后在javascript函数中:
function displaySequence(htmlCheckableElement){
if(typeof(htmlCheckableElement) == "undefined")
return;
var displayVariableExhOptions = "";
var displayText = "";
if(htmlCheckableElement.checked){
displayText += "Checkbox 1 is checked";
displayVariableExhOptions += "<input type=\"radio\" name=\"exhOptions\" id=\"sequenceOP15\" onChange=\"displaySequence()\" >"
+ "Radio Box 1<br/>"
+ "<input type=\"radio\" name=\"exhOptions\" id=\"sequenceOP16\" onChange=\"displaySequence()\" >"
+ "Radio Box 2<br/>"
}
document.getElementById("variableSpdExhOptions").innerHTML = displayVariableExhOptions;
document.getElementById("displayText").innerHTML = displayText;
}
}
函数显示顺序(htmlCheckableElement){
if(typeof(htmlCheckableElement)=“未定义”)
返回;
var displayVariableExhOptions=“”;
var displayText=“”;
if(htmlCheckableElement.checked){
displayText+=“复选框1已选中”;
displayVariableExhOptions+=“”
+“无线电信箱1
”
+ ""
+“无线电信箱2
”
}
document.getElementById(“variableSpdExhOptions”).innerHTML=displayVariableExhOptions;
document.getElementById(“displayText”).innerHTML=displayText;
}
}
我可能错了,但是如果是表单,最好的操作不是document.formname.elementname.value还是.checked?我可能错了,但是如果是表单,最好的操作不是document.formname.elementname.value还是.checked?谢谢js fiddle的帮助。我没有看到“onLoad”很高兴我能提供帮助!嗨,LmC,谢谢你的输入,但不幸的是,你的代码与我的代码做的是相同的事情。这两个单选按钮确实是生成的,但它们是不可选择的,这就是我的问题所在。嗨,很抱歉在这里这样做,但它似乎对我的JS提琴(在Chrome/Firefox中测试)非常适合没有escape char就这样了没有必要了谢谢js fiddle的帮助我没有看到“onLoad”很高兴我能提供帮助!嗨,LmC,谢谢你的输入,但不幸的是,你的代码与我的代码做的是相同的事情。这两个单选按钮确实是生成的,但它们是不可选择的,这就是我的问题所在。嗨,很抱歉在这里这样做,但它似乎对我的JS提琴(在Chrome/Firefox中测试)非常适合这是没有转义字符的,不需要它们。为什么当你的if语句只勾选复选框时,你的单选按钮会有变化?为什么当你的if语句只勾选复选框时,你的单选按钮会有变化?LmC的答案帮助了我。+1为你的努力,而LmC的答案帮助了我。+1为你的努力奥夫