我正在尝试使用Javascript输入表单。在表单上,如果下拉选择是某个选择,则下面将显示特定的表单字段。
这是我目前拥有的代码,但它似乎不起作用,我猜document.writeln
不是正确的方法。如果我添加一个警报以查看它是否正在拉动它的选择,那么添加表单的内容就会失败。在document.writeln
警报甚至不再出现之后?
<script language="javascript">
var HelpTopic = document.getElementById('type');
HelpTopic.onchange=function() {
if(HelpTopic.value == "Analytics") {
alert("Congrats");
document.writeln('\<li\>
\<label for\=\"confirm\"\>Input name*\<\/label\>
\<input type\=\"text\" name\=\"inputs\" id\=\"names\" required \/\>
\<\/li\>');
} else {
alert("Fails");
}
}
</script>
答案 0 :(得分:1)
你不能在JS中跨越多行的字符串。你需要这样的东西:
document.writeln('\<li\>' +
'\<label for\=\"confirm\"\>Input name*\<\/label\>' +
'\<input type\=\"text\" name\=\"inputs\" id\=\"names\" required \/\>' +
'\<\/li\>');
编辑:您不需要那么多的转义。这也可行:
document.writeln(
'<li>' +
'<label for="confirm">Input name*</label> ' +
'<input type="text" name="inputs" id="names" required />' +
'</li>');
答案 1 :(得分:1)
要将列表项正确添加到某个列表,请改为使用以下代码:
var oList = document.getElementById("MyList");
var oItem = document.createElement("li");
oItem.innerHTML = "<label for='confirm'>Input name*</label><input type='text' name='inputs' required />";
oList.appendChild(oItem);
这会将项目添加到ID为MyList
的列表中。
答案 2 :(得分:0)
只是快速说明,javascript支持多行字符串,如此
'<li>\
<label for="confirm">Input name*</label>\
<input type="text" name="inputs" id="names" required />\
</li>'
我同意Shadow Wizard,这是附加列表的最佳方式
答案 3 :(得分:0)
您尝试动态修改“onChange”(缺少大写字母C)的方式似乎与Chrome有问题
另外,你不能像你那样将字符串分成多行
以下代码应该有效,请注意我添加了“onChange = myfunc();”选择:
<select id=type onChange=myfunc();>";
<option value=Other>Other</option>
<option value=Analytics>Analytics</option>
</select>
<script language="javascript">
function myfunc()
{
var HelpTopic = document.getElementById('type');
if(HelpTopic.value == "Analytics") {
alert("Congrats");
document.write('<li><label for="confirm">Input name*</label><input type="text" name="inputs" id="names" required></li>');
} else {
alert("Fails");
}
}
</script>