私はJavascriptには比較的新しいですが、私の最初のプロジェクトとしてライブラリのウェブサイトを作ることに決めました。このプロジェクトを作っているうちに、配列から値を使ってinnerHTMLを設定しようとしたときにエラーが発生しました。私は私のエラーを知らせる取得する場所パートAで(Javascript)配列を使用して 'innerHTML'を参照するとエラーが発生しました
var catalog = [];
function book (title, firstName, lastName, number, publisher, image, checkedOut) {
this.title = title;
this.firstName = firstName;
this.lastName = lastName;
this.number = number;
this.publisher = publisher;
this.image = image;
this.isCheckedOut = checkedOut;
}
function addToCatalog (entry){
entry.number = catalog.length ;
catalog[entry.number] = entry;
}
$newbook = new book("Lost in the Woods", "Hubert", "Holmes", "3", "Junior Scholastic", "https://marketplace.canva.com/MAB5W63LDsw/1/0/thumbnail_large/canva-woods-thriller-e-book-cover-MAB5W63LDsw.jpg", false);
addToCatalog($newbook);
$newbook = new book("To Kill A Mockingbird", "Harper", "Lee", "1", "Junior Scholastic", "https://s-media-cache-ak0.pinimg.com/736x/a0/96/ff/a096ff3bafb7786b59ef9ba9d3e7ddf2.jpg", false);
addToCatalog($newbook);
var address = document.createElement("DIV");
address.setAttribute("class", "eachBook");
var picture = document.createElement("img");
picture.setAttribute("src", "http://www.iconsdb.com/icons/preview/gray/literature-xxl.png");
picture.setAttribute("class", "bookImg");
picture.setAttribute("alt", "Auburn Library Book");
var gtitle = document.createElement("h4");
gtitle.setAttribute("class", "bTitle");
var dname = document.createElement("p");
dname.setAttribute("class", "bName");
var button = document.createElement("button");
button.setAttribute("class", "checkout");
checkout = document.createTextNode("Checkout");
button.appendChild(checkout);
//Text in button
var available = document.createElement("p");
available.setAttribute("class", "available");
avail = document.createTextNode("Available");
available.appendChild(avail);
//text in available
function createBooks(){
document.getElementById("displayBooks").appendChild(address);
address.appendChild(picture);
address.appendChild(gtitle);
address.appendChild(dname);
address.appendChild(button);
address.appendChild(available);
}
function write(){
var x = 0;
var arr;
while (x < catalog.length){
createBooks();
arr = document.getElementsByClassName("bTitle");
arr[x].innerHTML = catalog[x].title; //Part A
arr = document.getElementsByClassName("bName");
arr[x].innerHTML = catalog[x].firstName +" "+ catalog[x].lastName;//Part B
arr = document.getElementsByTagName("img");
arr[x].src = catalog[x].image;
x++;
}
}
window.onload = function(){
write();
};
がある:ここに私の(汚い)コードである「TypeError例外を:未定義の 『innerHTMLプロパティ』プロパティを設定できません」。しかし、私はアラート機能を使用し、カタログ[0](Lost in the Woods)の値を得ました。また、コードがループを最初に通過した後にしか失敗しないように思えます。なぜなら、最初に正しく機能するようになるからです。私はそれが問題を完全に引き起こしてinnerHTMLかもしれないと思う、私は部分Aをコメントするとき、パートBは同じエラーを持つように見えます。 私はこの間違いを理解するのを手伝ってください。また、私はこのサイトとJavascriptの両方の初心者ですので、より良い角度からこの問題にアプローチする方法を教えてください。また、初心者にもやさしく答えてください(できる場合)
あなたのwhileループ条件は 'x
ここに[SoloLearn](https://code.sololearn.com/WpZyzqUe11A5)のリンクです – SirLucidus
'innerText'を試してみてください –