【问题标题】:Electron won't open file from JSONElectron 不会从 JSON 打开文件
【发布时间】: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


【解决方案1】:

我想通了。代码如下。

       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='openWindow(\"" + data[i].url + "\" )' >" + "</td>" +
            "</tr>"

    };
    aceFeedTable.insertAdjacentHTML('beforeend', htmlString)
}

function openWindow(url) {
    shell.openItem(url);
    console.log(url);
}

【讨论】:

    猜你喜欢
    • 2017-02-17
    • 2015-08-03
    • 2018-02-12
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 2021-06-21
    • 2021-12-23
    • 2016-11-19
    相关资源
    最近更新 更多