【发布时间】:2020-04-25 07:37:05
【问题描述】:
我正在尝试将 onclick='shell.openItem('filename') 与由 JSON 填充的文件名一起使用。当我 console.log(data[i].url) 它为每个按钮返回正确的 kmz 文件,但是当我点击按钮时它显示 Uncaught Reference Error: filename.kmz is not defined。
对我缺少什么的想法?谢谢。
var portsbtn = document.getElementById("portsbtn");
portsbtn.addEventListener("click", function() {
var ourRequest = new XMLHttpRequest();
ourRequest.open('GET', 'jsonclean.json');
ourRequest.onload = function() {
var ourData = JSON.parse(ourRequest.responseText);
renderHTML(ourData[23]);
};
ourRequest.send();
});
//WRITE HTML FROM JSON ON BUTTON CLICK
function renderHTML(data) {
var htmlString = "";
$('#aceCategory').empty();
for (i = 0; i < data.length; i++) {
htmlString += "<p class='categoryName'>" + data[i].category + "</p>" + "<tr>" + "<td class='feedDesc'>" + "<b>" + data[i].name +
"</b>" + "<br>" + data[i].desc + "</br>" + "<br>" + "<input type='button' id='openBtn' style='border-radius: 25px; outline: none' value='Open Link' onclick='shell.openItem(" + data[i].url + ");'" + ">" + "</td>" +
"</tr>"
console.log(data[i].url)
};
aceFeedTable.insertAdjacentHTML('beforeend', htmlString)
}
【问题讨论】:
-
到底为什么要将字符串合成到 html 中?使用 document.createElement 以普通的、甚至不是现代的方式构建 DOM 节点,并使用 appendChild 等组合和插入它们,并使用普通的 addEventListener 为它们分配事件侦听器。当您已经在 JS 方面时,不要在 HTML 方面使用
onclick=。 (或者,如果您使用 jQuery,请在 jQuery 中完成所有这些操作。它有很多有用的功能) -
你能举个例子吗?
-
现代 JS 教程和任何现代 jQuery 教程都可以很好地涵盖这种内容。即使是随意的网络搜索,也能找到很多。
标签: javascript jquery html json electron