我有一个从 JSON 对象中获得的书籍字符串对象。该 Book 对象具有三个键值对:标题、作者和 URL。我使用 for 循环来读取每个对象,然后将对象的标题作为按钮放在 html 页面上。但是,当单击该按钮时,我希望该书的 URL 得到提醒。当我读取对象时,我创建 Books 对象并将其推送到数组中以供以后使用。但我无法使用 .Click() 方法,URL 不正确。请参阅代码以更好地理解。 :-)
for (i = 0; i < 6; i++) //I know that there is only 65 Books..jsonString.books.lenght is not working.
{
var title = jsonString.books[i].title;
var classname = title.replace(/\s/g, "");
var author = jsonString.books[i].author;
var URL = jsonString.books[i].url;
var htmlString = '<div class="' + classname + '"><input type="button" value="' + title + '"></div>';
$(htmlString).appendTo(attachPoint).click(function () {
loadBook(URL);
});
OneBook = new Book(author, title, URL);
arr.push(OneBook);
}
attachpoint 是我从
获取的 html 文件中的引用var attachpoint=document.querySelector('.buttonAttachPoint');
因此,在上面的代码中,我点击的 URL 始终是 jsonString 中的最后一个对象。这是因为 for 循环而发生的。那么有没有一种方法可以获取具有 onclick 的 Div 的类名或按钮的标题,以便我可以从我创建的对象数组中获取 URL?或者有没有更简单的方法。还有人能指出为什么“jsonString.books.lenght”不起作用吗?预先感谢。:-) 非常感谢所有的帮助。 :-)
最佳答案
使用立即调用的函数表达式创建闭包应该可以解决问题。只需替换这个:
$(htmlString).appendTo(attachPoint).click(function () {
loadBook(URL);
});
这样:
(function(URL) {
$(htmlString).appendTo(attachPoint).click(function () {
loadBook(URL);
});
})(URL);
该匿名函数范围内的 URL
将传递给它的值,该值将是 for
循环迭代的正确值。
关于javascript - 查找 .click 函数的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15663978/