2011-07-18 17 views
0

私は、現在のものが押されたときに入力フィールド要素を追加するスクリプトを持っています。 innerHTMLを使用すると、現在のものが置き換えられます。これは、私が望むものではありません。だから、私はappendChildを追加して置き換えるべきではないと考えましたが、それは動作しません。相続人は私のスクリプト..AppendChildがAjaxリクエストで機能しない

<script type="text/javascript"> 
function addfile() 
{ 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("org_div1").appendChild = xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","addfile.php"); 
xmlhttp.send(); 
} 
</script> 

そして、私のHTMLコンテンツ...

<div id="org_div1" class="file_wrapper_input"> 

         <input type="hidden" value="1" id="theValue" /> 
<input type="file" class="fileupload" name="file1" size= 
"80" onchange="addfile()" /></div> 

そして、私のaddfile.phpファイル..

var i=0; 
     var ni = document.getElementById('org_div1'); 
     var numi = document.getElementById('theValue'); 
     var num = (document.getElementById('theValue').value -1)+ 2; 
     numi.value = num; 
     var divIdName = num; 
</script> 
<input type="file" class="fileupload" size="80" name="file' + (num) + '" onchange="addfile()" />; 

任意の入力?繰り返しますが、innerHTMLは機能しますが、appendChildは機能しません。ありがとう。

答えて

4

parent.appendChild()関数DOMNODEオブジェクトを待っていると、あなたは文字列を渡している場合、それが動作することはできません...

試してみてください。

var d = document.createElement('div'); 
d.innerHtml = xmlhttp.responseText; 
document.getElementById("org_div1").appendChild(d); 
+0

ここでエラーが発生しました。エラー:キャッチされない例外:[例外... "JavaScript引数arg 0 [nsIDOMHTMLDivElement.appendChild]" nsresult: "0x80570009(NS_ERROR_XPC_BAD_CONVERT_JS) :http://192.168.1.42/~jak2234/new_form/ :: ::行55 "データ:いいえ" –

0

のAppendChildは、オブジェクトを期待innerHTMLはStringで動作します。また、サーバーが部分的なHTMLを返すので、これはinnerHTMLでのみ機能します。

+0

@DariuszRああそうだ。 addfile.phpを文字列からオブジェクトに変換するサーバーがありますか? –

+0

しかし、それは親のすべての既存のHTMLを消去します – ChristopheCVB

+0

JavaScriptオブジェクトが必要になります。ブラウザオブジェクト(サーバーではありません)にしか作成できません。したがって、あなたはhtmlをJSONに変換できますが、依然としてクライアントサイトにDIV、INPUTおよびその他のオブジェクトを作成する必要があります。そしてはい - それは既存のhtmlファイルを置き換えます... – DariuszR

関連する問題