問題はdocument.write
、ドキュメントが閉じられた後のボタンのクリックイベントに使用していることです...つまり、すべてが上書きされます。あなたのページはシンプルで<h1>
ボタンとボタンしかないので、それらのものだけが隠されているように見えますが、ページ上のすべてのものになります (もっとあれば)。
解決策は、コンテンツを動的に使用.appendChild
および/または追加することです。.innerHTML
すぐに解決策を提供します:)
更新:
テーブルを使用しているので、ネイティブ メソッド.insertRow
を使用する.insertCell
こともできます。これにより、テーブルの作成がはるかに簡単になります。全体的に使用できるものの例を次に示します。
function CdCatalog(xmlDoc) {
var table = document.createElement("table");
var thead = table.createTHead(); // Where "header" rows go
// `insertRow` creates a <tr> element and appends it to `thead` automatically, returning the element
var tr = thead.insertRow(-1);
var td = document.createElement("th"); // No special method for creating "th" elements
td.innerHTML = "TITLE"; // Set its inner content
tr.appendChild(th); // Add it to the row (which is in the header)
td = document.createElement("td");
td.innerHTML = "YEAR";
tr.appendChild(td);
var x = xmlDoc.getElementsByTagName("CD");
// "tbody" is where a table's content goes, whether you do this explicitly or not
var tbody = table.tBodies[0];
for (var i = 0; i < x.length; i++) {
tr = tbody.insertRow(-1);
// `insertCell` creates a <td> element and appends it to `tr` automatically, returning the element
td = tr.insertCell(-1);
td.innerHTML = x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue;
td = tr.insertCell(-1);
td.innerHTML = x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue;
}
// Actually add the table to the DOM (the <body> element in this case)...you can specify where else to put it
document.body.appendChild(table);
}
// Make sure DOM is ready for manipulation
window.onload = function () {
var btn = document.getElementById("button_id"); // Whatever your button is
// Bind the "click" event for the button
btn.onclick = function () {
// Make your AJAX request
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "cd_catalog.xml", false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
// Pass the result to the function, instead of making everything global and sharing
CdCatalog(xmlDoc);
};
};
そして、私が間違っていない限り、...<td>
の中に入れ子にすることはできません<table>
...あなたはそれらを<tr>
...に入れ子にする必要があります。<table>