2011-12-27 6 views
26

私はDIV1とDIV2という2つのDIVを持っており、DIV1は動的コンテンツで構成され、DIV2は空です。私はDIV1の内容をDIV2に表示する必要があります。私はどうすればそれをすることができます。JavaScriptを使用してDIVのコンテンツを取得

私は動作しない以下のようにコード化しました。誰でもそれを修正してください。

<script type="text/javascript"> 

    var MyDiv1 = Document.getElementById('DIV1'); 
    var MyDiv2 = Document.getElementById('Div2'); 
    MyDiv2.innerHTML = MyDiv2; 

</script> 
<body> 
<div id="DIV1"> 
// Some content goes here. 
</div> 

<div id="DIV2"> 
</div> 
</body> 

答えて

61
は、(1)あなたの <script>タグが前に配置する必要があります

閉じる</body>タグ。あなたのJavaScriptはまだDOMにロードされていないHTML要素を操作しようとしています。
(2)HTMLコンテンツの割り当てが混乱しているように見えます。
(3)、 '文書' オブジェクトのための 'DIV2'
は(4)ユーザー小文字の対すなわち 'DIV2'(クレジット:ThatOtherPerson)あなたの要素のIDでケースと一貫してあなたが必要

<body> 
<div id="DIV1"> 
// Some content goes here. 
</div> 

<div id="DIV2"> 
</div> 
<script type="text/javascript"> 

    var MyDiv1 = document.getElementById('DIV1'); 
    var MyDiv2 = document.getElementById('DIV2'); 
    MyDiv2.innerHTML = MyDiv1.innerHTML; 

</script> 
</body> 
+0

あなたがJavaScriptのフレームワークの1つを使用している場合、その順序は重要ではありません。たとえば、$(document).readyを使用して内容がロードされるまで待つようにJQueryに指示することができます。Angularでは、約束を使ってコードを書くことができます。 JSをファイル全体に振りかけるのは良い習慣ではありませんが、ブラウザで読み込まれたファイルにJSを置くことは、あなたが待たなければならないということを意味します。個人的には、JSの奇妙な部分は、特にあなたが開発しているときは、大きな問題ではないと思います。 – Ghoti

+0

#1を指摘してくれてありがとう! – LinusGeffarth

4

今はdiv要素全体にinnerHTMLを設定しています。 innerHTMLだけに設定する必要があります。また、MyDiv2.innerHTML = MyDiv .innerHTMLが欲しいと思います。また、私はdocument.getElementByIdへの議論は大文字小文字を区別すると思います。あなたのDOMの準備が整う前にも、このコードが実行されるDIV2

var MyDiv1 = Document.getElementById('DIV1'); 
var MyDiv2 = Document.getElementById('DIV2'); 
MyDiv2.innerHTML = MyDiv1.innerHTML; 

を望んでいたときは、Div2を集めています。あなたはpaisleeが言ったようにあなたの体の下部に、このスクリプトを置くか、あなたの体のonload機能でそれを置くことができるいずれか

<body onload="loadFunction()"> 

、その後

function loadFunction(){ 
    var MyDiv1 = Document.getElementById('DIV1'); 
    var MyDiv2 = Document.getElementById('DIV2'); 
    MyDiv2.innerHTML = MyDiv1.innerHTML; 
} 
3

Div2をDiv1のinnerHTMLに設定します。また、JavaScriptでは大文字と小文字が区別されます.HTMLでは、Div2というIDはDIV2です。また、あなたはdocument、ないDocument使用する必要があります。http://jsfiddle.net/gFN6r/:ここ

var MyDiv1 = document.getElementById('DIV1'); 
var MyDiv2 = document.getElementById('DIV2'); 
MyDiv2.innerHTML = MyDiv1.innerHTML; 

をJSFiddleです。

1

jqueryプラグインを使用してdivの内容を取得/設定することができます。

var divContent = $( '#' DIV1).html(); $( '#' DIV2).html(divContent);

これはjqueryライブラリを含める必要があります。

+5

質問はjqueryに関するものではありませんでした。 –

2

関数add_more(){

var text_count = document.getElementById('text_count').value; 
var div_cmp = document.getElementById('div_cmp'); 
var values = div_cmp.innnerHTML; 
var count = parseInt(text_count); 
divContent = ''; 

for (i = 1; i <= count; i++) { 

    var cmp_text = document.getElementById('cmp_name_' + i).value; 
    var cmp_textarea = document.getElementById('cmp_remark_' + i).value; 
    divContent += '<div id="div_cmp_' + i + '">' + 
     '<input type="text" align="top" name="cmp_name[]" id="cmp_name_' + i + '" value="' + cmp_text + '" >' + 
     '<textarea rows="1" cols="20" name="cmp_remark[]" id="cmp_remark_' + i + '">' + cmp_textarea + '</textarea>' + 
     '</div>'; 
} 

var newCount = count + 1; 

if (document.getElementById('div_cmp_' + newCount) == null) { 
    var newText = '<div id="div_cmp_' + newCount + '">' + 
     '<input type="text" align="top" name="cmp_name[]" id="cmp_name_' + newCount + '" value="" >' + 
     '<textarea rows="1" cols="20" name="cmp_remark[]" id="cmp_remark_' + newCount + '" ></textarea>' + 
     '</div>'; 
    //content = div_cmp.innerHTML; 
    div_cmp.innerHTML = divContent + newText; 
} else { 
    document.getElementById('div_cmp_' + newCount).innerHTML = '<input type="text" align="top" name="cmp_name[]" id="cmp_name_' + newCount + '" value="" >' + 
     '<textarea rows="1" cols="20" name="cmp_remark[]" id="cmp_remark_' + newCount + '" ></textarea>'; 
} 

document.getElementById('text_count').value = newCount; 

}