0

必要な XML ファイルの情報に応じて div を生成するスクリプトを作成しようとしています。問題は、スクリプトがまったく機能しないことです。私がしたことは、w3schools.org でコードを見つけて、やりたいことと一致するように少し修正することでした。

結果:

<script type="text/javascript">
if (window.XMLHttpRequest)
{ // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{ // code for IE6, IE5
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","products.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 

var size=0;
var i=0;
var x=xmlDoc.getElementsByTagName("honey");
var y=x.length;
var final=null;

function gethoney()
{
   for (i < y) 
   { 
     a1='<div style="height:200px;width:300px;float:left;background-color:#FFF5CC;opacity:0.7;text-align:center;">';
     a2='<p><b>';
     a3=(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
     a4='<br>';
     a5=(x[i].getElementsByTagName("price")[0].childNodes[0].nodeValue);
     a6='</br></b></p>';
     a8='</div>';
     a9='<div style="height:200px;width:20px;float:left;"></div>';
     a10='<div style="height:200px;width:100px;float:left;">';
     a11=(x[i].getElementsByTagName("image")[0].childNodes[0].nodeValue);
     a12='</div>';
     final=final + a1 + a2 + a3 + a4 + a5 + a6 + a8 + a9 + a10 + a11 + a12;
     size=size+300;
     i=i+1;
   }
document.getElementById("mainbody").style.height=size;
size=size-20;
document.getElementById("products").style.height=size;
document.getElementById("products").innerHTML=final;
}
</script>

すべての div を保存するために final を使用することは、私にとって理想的な方法とは思えませんが、とにかくそれを行いました。

XML は次のとおりです。

<?xml version="1.0" encoding="windows-1252"?>
<honey>
   <name>one</name>
   <price>3</price>
   <image><img src=""></img></image>
   <disc>This is a honey</disc>
</honey>
<honey>
   <name>one</name>
   <price>3</price>
   <image><img src=""></img></image>
   <disc>This is a honey</disc>
</honey>
etc etc

これに関する情報を見つけようとしましたが、運がありませんでした。誰かが私が間違っていることを指摘し、改善/修正を提案できますか? また、 finalを使用せずに div を生成してから innerHTML を保存する方法を誰かが書き留めていただければ幸いです。

4

1 に答える 1