Это потому, что bookname
и authorname
сохраняют последнее значение, установленное последней итерацией для для l oop. Другими словами, эти переменные просто перезаписываются несколько раз до тех пор, пока не закончится for l oop. Если вы хотите сохранить эту информацию для каждого элемента, вы можете сохранить их в атрибутах HTML5 data-
и получить их в обработчике onclick.
Например, вы можете сделать это:
"<input type='button' value='Add Rating' data-bookname='"+bookname+"' data-authorname='"+authorname+"' onClick='submitRating(this)' />"
И затем, в вашем методе submitRating
, вы можете просто прочитать информацию, используя Element.dataset
:
async function submitRating(el) {
const bookname = el.dataset.bookname;
const authorname = el.dataset.authorname;
// More logic here
}