I'm using JavaScript fetch API to generate random quote. on page load it change but when I click on the new quote button it give type error .
onclick on the button =
TypeError: Cannot read properties of undefined (reading 'length') at HTMLButtonElement.newQuote
HTML Markup
<div id="quote-container">
<div>
<span id="quote"></span>
</div>
<div>
<span id="author"></span>
</div>
<div>
<button id="newQuote">New Quote</button>
</div>
</div>
JavaScript code
`
class Quote {
apiQuote = [];
apiUrl = '';
constructor(apiUrl){
this.apiUrl = apiUrl;
};
newQuote(){
const quoteTxt = document.getElementById('quote');
const author = document.getElementById('author');
const quote = this.apiQuote[Math.floor(Math.random() * this.apiQuote.length)];
quoteTxt.innerHTML = quote.text;
author.innerHTML = quote.author;
};
async getQuote(){
try{
let spread = this.apiUrl;
let response = await fetch(this.apiUrl);
this.apiQuote = await response.json();
this.newQuote();
}catch(e){
console.log(e);
}
}
}
let quote = new Quote('https://type.fit/api/quotes');
quote.getQuote();
document.getElementById('newQuote').addEventListener('click',quote.newQuote)
`