2011-01-11 6 views
3

純粋なJavascriptでdivを複製しようとしていますが、cloneNodeは重複ID(div_0)につながります。私はdiv_1、div_2としてIDをインクリメントしたい...と= { 'elemは'、 'div_1を'} SOMEVARする同じことを行う...おかげJavascriptで要素[div] [script]を複製する

<html> 
<head></head> 
<body> 
<div id="mydiv"> 
    <div id="div_0"> 
     <script type="text/javascript"> 
      <!-- 
      somevar = {'elem', 'div_0'}; 
      //--> 
     </script> 
     <p>HELLO</p> 
    </div> 
</div> 

<a href="#" onclick="cloning()">CLONE</a> 

<script type="text/javascript"> 
    function cloning() { 
     var container = document.getElementById('mydiv'); 
     var clone = document.getElementById('div_0').cloneNode(true); 
     container.appendChild (clone); 
    } 
</script> 
</body> 
</html> 
+0

'somevar'で同じことをどういう意味ですか? –

+0

は、基本的には親divの値を保持するvarです。してください、名前を省略してください – Mike

+0

あなたはより具体的にする必要があります。新しいdivが閉じられた後に 'somevar'オブジェクトの最終結果を表示してください。私があなたが望むものを知っていると仮定しないでください。ところで、その構文は無効です。これはキーでなければなりません:値または配列にする必要があります。 –

答えて

1

設定counter=0し、各cloning呼び出しの後インクリメントうcounter++ととclone.idを使用して'div_' + counter

+0

これは、深くクローンされたスクリプトタグの内容を変更するためのOPの質問を解決しません。 – Phrogz

4

に設定し、これを試してみてください。..

`

function cloning() { 
    var container = document.getElementById('mydiv'); 
    var clone = document.getElementById('div_0').cloneNode(true); 
    clone.setAttribute('id','div_'+document.getElementById('mydiv').getElementsByTagName('div').length); 
    container.appendChild (clone); 
} 
function cloning (e) { 
    if (typeof e === 'string') { 
     e = document.getElementById(e); 
    } 

    var clone = e.cloneNode(true), 
     last_inc = cloning.last_inc || parseInt(e.id.match(/(\d+)$/)[0], 10); 

    last_inc += 1; 

    clone.id = 'div_' + last_inc; 
    cloning.last_inc = last_inc; 

    e.parentNode.appendChild(clone); 
} 

あなたがどこかに、グローバル変数を更新したい場合は、あなたがreturn { "elem" : "div_" + last_inc };を行い、その結果を割り当てることができます。私はこれをテストする機会がなかったが、これはトリックを行う可能性があります`

+0

これはdiv idの仕事ですが、 '