質問1 - 私はjson配列を通して単純なループを行い、配列内のオブジェクトごとに新しい行を作成しようとしています。何らかの理由で私は理解できません。配列の最後のオブジェクトをDOMに印刷するだけです。だから私はすべてが正しく接続されていることを知っている、私はちょうどなぜ1つのオブジェクトが表示されているのか分からない。私はオブジェクトの配列をループしてテーブルに移入しようとしています
私はインターネット上でこれと同様の他の投稿があることを知っています。私はちょうど私の正確な問題を理解することに問題があります。
質問2 - 私は私の関数の中で初期var row = table.insertRow(-1);
を入れしようとした場合、私はエラーコンソールで
"cannot read property insertRow of undefined"
を得るが、それは私の関数の外だ場合、私はエラーを取得しないでください。 GenerateTable()内にあれば、私の関数はまだそれにアクセスすることができるだろうと思った?
var table_data = [{
first_name: 'Zoe',
last_name: 'Heriot',
home: 'Space Station W3'
}, {
first_name: 'Jo',
last_name: 'Grant',
home: 'Earth'
}, {
first_name: 'Clara',
last_name: 'Oswald',
home: 'Earth'
}, {
first_name: 'Adric',
last_name: null,
home: 'Alzarius'
}, {
first_name: 'Susan',
last_name: 'Foreman',
home: 'Gallifrey'
}];
var row = table.insertRow(-1);
function GenerateTable() {
var table = document.getElementById('table')[1];
for (var i = 0; i <= table_data.length; i++) {
var firstName = table_data[i].first_name;
var lastName = table_data[i].last_name;
var home = table_data[i].home;
row.innerHTML = `
<td>${firstName}</td>
<td>${lastName}</td>
<td>${home}</td>
`;
};
};
if (document.attachEvent ? document.readyState === "complete" :
document.readyState !== "loading") {
GenerateTable();
} else {
document.addEventListener('DOMContentLoaded', GenerateTable);
}
<table id="table">
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Home</th>
</tr>
</table>
:
はここで働いてスニペットです。あなたはループ内でそれを行う必要があります。あなたは質問の始めにそう言いますが、あなたのコードはそれを全く反映していません。 –