RemoveChild不起作用

时间:2012-02-17 05:10:33

标签: javascript tinymce

我在使用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: enter image description here

3 个答案:

答案 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元素,例如labeltextarea,因为您问题的其他解决方案会显示出来。

我只是想知道为什么你的页面上有两个tinymce编辑器? 对我来说,看起来你可能更喜欢只初始化一个而不是之后删除第二个。