我在使用javascript removeChild函数时遇到问题。 这是我的剧本:
////function to add element by ID////
var i=1;
$("#buttonAdd").live('click',function() {
$("#list1 li:last-child").parent().append('<li>'+
'<label for=njajal[]>njajal'+
'<textarea class="tinymce" name="njajal[]" id="aaa'+i+'"></textarea>'+
'<span><a class="delIt" id="'+i+'"><b>Hapus</a></span></label>'+
'</li>');
tinyMCE.execCommand('mceAddControl', false, 'aaa'+i);
console.log('add '+i);
i++;
});
////Function to delete element by ID/////
function delIt(eleId)
{
d = document;
var ele = d.getElementById(eleId);
var parentEle = d.getElementById('njajal');
parentEle.removeChild(ele);
}
有什么问题?
这是HTML代码:
<div id="form">
<form method="post" action="">
<fieldset>
<ol id="list1">
<li>
<label for="njajal[]">njajal
<textarea name="njajal[]" class="tinymce" ></textarea>
</label>
</li>
</ol>
<div id="addOpt">
<a id="buttonAdd" class="bt"><b>Tambah</a>
</div>
</fieldset>
</form>
</div>
Screnshot:
答案 0 :(得分:2)
您在第一个函数中使用jQuery,因此删除该元素的最简单方法是使用jQuery:
$('#myElementID').remove();
以下是使用普通javascript完成相同操作的方法:
var myElement = document.getElementById('myElementID');
myElement.parentNode.removeChild(myElement);
答案 1 :(得分:1)
修改强> 的
简化阅读>
为“孩子:
据我所知,问题是textarea > label > li > ol
。实际拥有id的唯一元素是<ol>
,因此要删除标签(如图中所示),将delIt更改为:
function deleteLabelTextArea(){
var elementRemove = document.getElementById("list1").firstElementChild.firstElementChild;
elementRemove.parentNode.removeChild(elementRemove);
}
旧答案:
由于我们无法看到HTML,我不确定问题是什么,而不是Marc B提到“njajal”不是eleID的父级。为了解决这个问题,我建议:
function delIt(eleId){
var ele = document.getElementById(eleId);
ele.parentNode.removeChild(ele);
}
答案 2 :(得分:0)
到目前为止提出的解决方案不起作用,因为tinymce不是textarea !! 使用指定html元素的内容初始化Tinymce - 在这种情况下是textarea。初始化后,会创建一个带有contenteditable正文的iframe,用户可以在其中编辑html内容。
为了摆脱tinymce编辑器,你需要先关闭它:
tinymce.execCommand('mceRemoveControl', false, 'content'); // your textarea got no id, then tinymce uses 'content' as default editor id
其次,您可以删除初始的html元素,例如label
和textarea
,因为您问题的其他解决方案会显示出来。
我只是想知道为什么你的页面上有两个tinymce编辑器? 对我来说,看起来你可能更喜欢只初始化一个而不是之后删除第二个。