模板文字函数传递的问题
Problem with Template Literal Function Passing
快速总结。我创建了一个包含一些数据的 JSON 文件(这没问题,并且显示正常),我从中创建了一个 JavaScript 函数来将所述 JSON 数据导出到 HTML (也很好)。
问题出在我添加到从以下函数创建的每个 div 的 onclick
函数中,我能够传递并记录一个数字,但由于某种原因,它不适用于字符串。
function returnHTML() {
// HTML Element to append JSON info to
var div = document.getElementById('list');
// Variable to test onClick
var test = "TEST";
fetch("./test.json")
.then(function(res) {
return res.json();
})
.then(function(data) {
for (var i = 0; i < (data.games.fps).length; i++) {
var markup = `
<div class='box' id="${data.games.fps[i].name}" onclick="myFunction(${test})">
<div class='box__top'> ${data.games.fps[i].img} </div>
<div class='box__bottom'> ${data.games.fps[i].name} </div>
</div>
`;
div.innerHTML = div.innerHTML + markup;
}
})
}
// Random function to test variable passing.
function myFunction(x) {
console.log("Clicked: " + x);
}
returnHTML();
我预计控制台的输出是:
Clicked: TEST
但是,我得到:ReferenceError: Can't find variable: TEST
您的代码正在输出 onclick="myFunction(TEST)"
,因为这是您生成 HTML 时 test
变量的值。
添加双引号(或单引号)应该可以解决问题:
<div class='box' id="${data.games.fps[i].name}" onclick="myFunction('${test}')">
快速总结。我创建了一个包含一些数据的 JSON 文件(这没问题,并且显示正常),我从中创建了一个 JavaScript 函数来将所述 JSON 数据导出到 HTML (也很好)。
问题出在我添加到从以下函数创建的每个 div 的 onclick
函数中,我能够传递并记录一个数字,但由于某种原因,它不适用于字符串。
function returnHTML() {
// HTML Element to append JSON info to
var div = document.getElementById('list');
// Variable to test onClick
var test = "TEST";
fetch("./test.json")
.then(function(res) {
return res.json();
})
.then(function(data) {
for (var i = 0; i < (data.games.fps).length; i++) {
var markup = `
<div class='box' id="${data.games.fps[i].name}" onclick="myFunction(${test})">
<div class='box__top'> ${data.games.fps[i].img} </div>
<div class='box__bottom'> ${data.games.fps[i].name} </div>
</div>
`;
div.innerHTML = div.innerHTML + markup;
}
})
}
// Random function to test variable passing.
function myFunction(x) {
console.log("Clicked: " + x);
}
returnHTML();
我预计控制台的输出是:
Clicked: TEST
但是,我得到:ReferenceError: Can't find variable: TEST
您的代码正在输出 onclick="myFunction(TEST)"
,因为这是您生成 HTML 时 test
变量的值。
添加双引号(或单引号)应该可以解决问题:
<div class='box' id="${data.games.fps[i].name}" onclick="myFunction('${test}')">