2012-02-17 2 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); 
    } 

문제가 무엇인가 여기 내 스크립트입니까?

<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

'eleid'노드의 직접적인 자식 'njajal'입니까? 직접적인 부모 - 자식 관계 여야합니다. 두 노드 사이에 다른 레이어가 있으면 removeChild를 사용할 수 없습니다. –

+1

성취하려는 것을 알려주십시오. – naveen

+0

TinyMCE를 사용하여 텍스트 영역을 제거하고 싶습니다. 여기서 문제가 있습니다. 스크립트와 HTML을 자신의 screnshot 이미지와 함께 추가했습니다 .. 해당 지원을하시기 바랍니다 .. – Tarjo

답변

2

당신은, 당신의 첫번째 기능에 jQuery를 사용하므로 jQuery를 함께 할 것이라고 요소를 제거하는 가장 쉬운 방법 :

$('#myElementID').remove(); 
을 여기

는 HTML 코드입니다

다음은 일반 자바 스크립트로 동일한 작업을 수행하는 방법입니다.

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

편집 :

것들을 간단하게하기 위해이 같은 >을 읽기 "의 아이 : 나는 문제가 무엇을 말할 수에서

textarea > label > li > ol입니다.

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

올드 답 : :


우리가 HTML의 I를 볼 수 없기 때문에 실제로 ID를 갖는 유일한 요소는 (당신이 이미지에 표시로) <ol> 너무로 변경 delIt을 라벨을 제거하는 것입니다 Marc B가 'njajal'이 eleID의 부모가 아니라고 언급 한 것 이외에 문제가 무엇인지 확실하지 않습니다. 이 문제를 해결하려면 다음을 권합니다.

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

스크립트와 HTML을 그의 스크린 샷과 함께 추가했습니다. – Tarjo

+0

@Zaguza이 (가)이 Edit는 당신의 문제를 해결합니까? – Hawken

0

tinymce가 텍스트 영역이 아니기 때문에 지금까지 제시된 해결책은 작동하지 않습니다! Tinymce는 지정된 html 요소의 내용 (이 경우 텍스트 영역)을 사용하여 초기화됩니다. 초기화가 끝나면 사용자가 HTML 컨텐트를 편집 할 수있는 contenteditable 본문이있는 iframe이 만들어집니다. 위해

당신이 먼저 종료 할 필요가 TinyMCE를 편집기 없애 :

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

둘째, 당신은 당신의 질문 쇼에 다른 솔루션으로 labeltextarea 같은 초기 HTML 요소를 제거 할 수 있습니다.

나는 왜 당신이 당신의 페이지에 2 개의 tinymce 편집자를 가지고 있는지 의아하게 생각합니까? 나를 위해 두 번째 하나를 나중에 제거하는 대신 하나만 초기화하는 것이 좋습니다.

+0

완전한 tinymce 초기화 구성을 사용하면 도움이 될 수 있습니다. – Thariama

관련 문제