javascript - 如何修复 Javascript onclick 调用?
问题描述
我无法理解为什么我的 onclick 按钮不起作用。我的 onclick 按钮位于修改 HTML 的 JS 函数中。
这是包含 onclick 按钮的功能:
const bookmarkHTML = (bookmark) => {
let html = '';
if (bookmark.url.includes('https://') || bookmark.url.includes('http://')) {
const li = `
<li>
<div class="row card-margin">
<div class="col s12 m12 card-padding">
<div class="card-panel teal card-size">
<img src='${'https://www.google.com/s2/favicons?domain_url=' + bookmark.url}' alt='icon' class='img-size'>
<a class='white-text' href='${bookmark.url}' target='_blank'>${bookmark.website}</a>
<button class='btn-flat waves-light btn-small right' onclick='switchCategory(bookmark)'><i class='material-icons left'>compare_arrows</i>switch</button>
</div>
</div>
</div>
</li>
`;
html += li;
} else {
const li = `
<li>
<div class="row card-margin">
<div class="col s12 m12 card-padding">
<div class="card-panel teal card-size">
<img src='${'https://www.google.com/s2/favicons?domain_url=' + bookmark.url}' alt='icon' class='img-size'>
<a class='white-text' href='${'https://' + bookmark.url}' target='_blank'>${bookmark.website}</a>
<button class='btn-flat waves-light btn-small right' onclick='switchCategory(bookmark)'><i class='material-icons left'>compare_arrows</i>switch</button>
</div>
</div>
</div>
</li>
`;
html += li;
}
console.log('HTML:', html);
return html;
}
这是 onclick 中调用的函数:
switchCategory = (bookmark) => {
if (bookmark.favorite) {
bookmark.favorite = false;
} else {
bookmark.favorite = true;
}
}
如果需要,这里是调用 bookmarkHTML 函数的函数:
const setupBookmarks = (data) => {
let favoritesHTML = '';
let bookmarksHTML = '';
if (data.length) {
data.forEach(doc => {
const bookmark = doc.data();
if (bookmark.favorite) {
favoritesHTML += bookmarkHTML(bookmark);
} else {
bookmarksHTML += bookmarkHTML(bookmark);
}
})
}
favoriteList.innerHTML = favoritesHTML;
bookmarkList.innerHTML = bookmarksHTML;
}
当我单击带有 onclick 的按钮时,出现此错误:
未捕获的 ReferenceError:书签未在 HTMLButtonElement.onclick (index.html:1) 中定义
谢谢你的帮助。
解决方案
似乎正在发生这种情况,因为当您在模板文字中传递一个对象时,switchCategory(bookmark)
该对象被转换为[object Object]
. 一种解决方法可能是将该对象转换为字符串switchCategory(${JSON.stringify(bookmark)})
,但在您的情况下它不会完成这项工作,因为您稍后会改变该对象。我认为添加EventListener可能是解决此问题的方法。我也发现了类似的问题,所以你可以得到更多的信息,也许是一个更好的解决方案。
推荐阅读
- python - Python-workfront 无法从搜索中检索值
- java - 从 HDFS 流式传输文件与将其复制到本地磁盘
- excel - 根据数据集在新表中显示单元格
- php - 在webview中将网页从服务器重定向到android
- java - java,txt文件形式输出不正确(简单从控制台输入两个值,输出相加的值)
- git - 致命:无法从 npm 安装新依赖项上的远程存储库读取
- javascript - 如何使图像适合整个 JQuery DataTable 单元格
- powershell - 对文件夹中的每个文件执行的 Powershell 脚本?
- spring - 弹簧方面没有在 getConnection 上被解雇
- ios - tabbarController 上方的 presentViewController