RemoveChild не работает - PullRequest
       8

RemoveChild не работает

0 голосов
/ 17 февраля 2012

У меня проблема с использованием функции удаления javascript. Вот мой сценарий:

    ////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 ]

2 голосов
/ 17 февраля 2012

Вы используете jQuery в своей первой функции, поэтому самый простой способ удалить этот элемент был бы с jQuery:

$('#myElementID').remove();

Вот как вы можете сделать то же самое с простым javascript:

var myElement = document.getElementById('myElementID');
myElement.parentNode.removeChild(myElement);
1 голос
/ 17 февраля 2012

EDIT:

Чтобы упростить задачу, прочитайте > как "потомок:

Из того, что я могу сказать, проблема в том, что textarea > label > li > ol. Единственный элемент, фактически имеющий идентификатор - это <ol>, поэтому для удаления метки (как показано на рисунке) измените delIt на:

function deleteLabelTextArea(){
   var elementRemove = document.getElementById("list1").firstElementChild.firstElementChild;
   elementRemove.parentNode.removeChild(elementRemove);
}

Старый ответ:


Поскольку мы не можем видеть HTML, я не уверен, в чем проблема, кроме как, как отметил Марк Б., что njajal не является родителем eleID. Чтобы исправить это, я бы порекомендовал:

function delIt(eleId){
   var ele = document.getElementById(eleId);
   ele.parentNode.removeChild(ele);
}
0 голосов
/ 17 февраля 2012

Решения, представленные до сих пор, не будут работать, потому что tinymce НЕ является текстовой областью !!Tinymce инициализируется с использованием содержимого указанного html-элемента - в данном случае текстовой области.После инициализации создается iframe с contenteditable body, где пользователи могут редактировать html-контент.

Чтобы избавиться от редактора tinymce, сначала необходимо его отключить:

tinymce.execCommand('mceRemoveControl', false, 'content'); // your textarea got no id, then tinymce uses 'content' as default editor id

SecondВы можете удалить исходные элементы HTML, такие как label и textarea, как показывают другие решения вашего вопроса.

Мне просто интересно, почему на вашей странице есть два редактора tinymce?Мне кажется, что вы могли бы предпочесть инициализировать только одну из них вместо удаления второй впоследствии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...