2012-02-17 32 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

は、 'eleid'ノードの直接の子である 'njajal'ですか?直接の親子関係です.2つのノードの間に他のレイヤーがある場合、removeChildを使用することはできません。 –

+1

あなたが達成しようとしていることを教えてください? – naveen

+0

TinyMCEを使ってテキストエリアを削除したいのですが、ここで問題があります。 スクリプトの画像とHTMLを追加しました。 対応してください。 – Tarjo

答えて

2

あなたはあなたの最初の関数内でのjQueryを使用するので、その要素を削除する最も簡単な方法は、jQueryを使って次のようになります。

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

プレーンなjavascriptで同じことを実現する方法は次のとおりです。

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

編集:私は問題がtextarea > label > li > olということです伝えることができるものから、

物事を簡単にするための子」として>をお読みください。実際にIDを持つ唯一の要素がに(あなたが画像で表示される)ので、ラベルを除去するための変更delIt <ol>です:

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

旧回答:


我々はHTML Iを見ることができないのでMarc Bが 'njajal'はeleIDの親ではないと言いました。私が推薦することを修正するには:TinyMCEのはTEXTAREAされていないため、

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

スクリプトの画像とHTMLを追加しました。 – Tarjo

+0

@Zaguzaはこの編集を行いますか? – Hawken

0

今まで提示ソリューションが動作しません! Tinymceは、指定されたhtml要素(この場合はテキスト領域)の内容を使用して初期化されます。初期化の後、コンテンツ編集可能なbodyを持つiframeが作成され、ユーザーはhtmlコンテンツを編集できます。あなたが最初にそれをシャットダウンする必要があるのTinyMCEエディタを取り除くために

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

第二に、あなたは、あなたの質問のショーに他のソリューションとしてlabeltextareaのような初期のHTML要素を削除することができます。

私はちょうどあなたのページに2つのtinymceエディタを持っているのだろうか? 私の場合は、後で2つ目を削除する代わりに、1つだけ初期化する方が好きかもしれないようです。

+0

完全なtinymce初期設定を使用することができれば助けになるかもしれません – Thariama