仅附加文本框一次
Append textbox only once
>我有一个带有在单击时附加文本框的功能的复选框。现在的问题是每次我单击复选框时都会出现一个新文本框,如果我单击复选框说 10 次,我会得到 10 个文本框。我想停止它,单击后我无法使用禁用文本框,因为在禁用文本框时有一个功能无法正常工作。对此的任何帮助将不胜感激。
<input onClick="myFunction();" id="demoteTask" name="demoteTask" type="checkbox"/> <label for"demoteTask_cbx">Demote to Child</label>
<span id="DemoteContainer"></span>
<script>
function myFunction() {
var span = document.createElement('SPAN');
span.innerHTML = '<input id="parent" name = "parent" type="textbox" />';
document.getElementById("DemoteContainer").appendChild(span);
}
</script>
我想实现这样的事情:
<script>
var tmp=1;
function myFunction() {
if(tmp%2==1)
{
var span = document.createElement('SPAN');
span.innerHTML = '<input id="parent" name = "parent" type="textbox" />';
document.getElementById("DemoteContainer").appendChild(span);
tmp++;
}
else
{
var d = document.getElementById("DemoteContainer");
var d_nested = document.getElementById("parent");
var throwawayNode = d.removeChild(d_nested);
tmp++;
}
}
</script>
您可以在
添加文本框之前检查元素(文本框)是否存在,如下所示:
function myFunction() {
//check if text box with id "parent" exists, add if doesn't
if( !document.getElementById("parent") ) {
var span = document.createElement('SPAN');
span.innerHTML = '<input id="parent" name = "parent" type="textbox" />';
document.getElementById("DemoteContainer").appendChild(span);
}
}
或
function myFunction() {
//check if text box with id "parent" exists, add if doesn't
if( !document.querySelector("#DemoteContainer input#parent") ) {
var span = document.createElement('SPAN');
span.innerHTML = '<input id="parent" name = "parent" type="textbox" />';
document.getElementById("DemoteContainer").appendChild(span);
}
}
将
脚本替换为以下脚本:-
<script>
function myFunction() {
var elem = document.getElementById("parent");
if(elem != null)
elem.parentNode.removeChild(elem);
var span = document.createElement('SPAN');
span.innerHTML = '<input id="parent" name = "parent" type="textbox" />';
document.getElementById("DemoteContainer").appendChild(span);
// document.getElementById("demoteTask").disabled = true;
}
</script>
如果您不介意每次单击文本框时再次生成文本框,请使用 innerHTML 替换容器的整个内容,而不是 appendChild:
document.getElementById("DemoteContainer").innerHTML = '<input id="parent" name = "parent" type="textbox" />';
<input onClick="myFunction();" id="demoteTask" name="demoteTask" type="checkbox"/> <label for"demoteTask_cbx">Demote to Child</label>
<span id="DemoteContainer"></span>
<script>
function myFunction() {
var checkBox = document.getElementById('demoteTask');
if (!checkBox.checked) {
document.getElementById("parent").remove()
} else {
var span = document.createElement('span');
span.innerHTML = '<input id="parent" name = "parent" type="textbox" />';
document.getElementById("DemoteContainer").appendChild(span);
}
}
</script>
相关文章:
- 正在查找最后一次出现的文本
- 如何更新按钮内部的文本,每行重复一次
- 正在加载“"循环,每3秒更改一次文本
- iOS cordova应用程序中的文本区域只接受一次输入
- 希望文本一次附加一个字母(或按块)d3
- 只需单击一次按钮,jquery即可自动淡入/淡出文本
- 仅附加文本框一次
- 只能使用 jQuery 更改文本的字体系列一次
- 在 Javascript 中闪烁文本一次
- 如何在Javascript中一次获取多个按钮的文本
- 如何在文本区域的焦点上执行一次代码
- Javascript:同时启用 2 个文本框,单击一次复选框
- 使用 JavaScript 一次又一次地在画布上编写文本
- 在网格视图内(单击时标签转到文本框)一次一个
- Javascript-每3秒更改一次文本和颜色
- 只弹出一次更改文本框值的窗体
- 单击时添加一次文本进行输入
- Jquery改变文本框边框,但只有一次
- 如何在while循环中显示一次且仅显示一次文本?
- 使用timymce编辑器只有一次文本区域