2012-02-17 4 views
0

У меня возникла проблема с использованием функции javascript removeChild. Вот мой сценарий: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

+2

является «njajal» прямым дочерним элементом узла «eleID»? Он должен иметь прямую связь между родителями и дочерними элементами - вы не можете использовать removeChild, если между этими двумя узлами существуют другие слои. –

+1

, пожалуйста, сообщите нам, чего вы пытаетесь достичь? – naveen

+0

Я хочу удалить текстовое поле с помощью TinyMCE, и у меня здесь проблемы. Я добавил скрипт и HTML с изображениями его скриншотов .. , пожалуйста, его поддержка .. – Tarjo

ответ

2

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

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

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

var myElement = document.getElementById('myElementID'); 
myElement.parentNode.removeChild(myElement); 
1

EDIT:

Чтобы сделать вещи проще прочитать > как «ребенок:

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

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

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


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

function delIt(eleId){ 
    var ele = document.getElementById(eleId); 
    ele.parentNode.removeChild(ele); 
} 
+0

Я добавил скрипт и HTML с изображениями его скриншотов. – Tarjo

+0

@ Zaguza делает это Изменить Сообщить о проблеме? – Hawken

0

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

Для того, чтобы избавиться от редактора TinyMCE вам нужно, чтобы закрыть его первым:

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

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

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

+0

это может помочь, если вы можете показать свою полную конфигурацию инициализации tinymce – Thariama

Смежные вопросы