Это потому, что вы пытаетесь назначить прослушиватель событий с параметрами в обработчике.Вы не можете сделать это.Вы должны поместить каждый обработчик событий в анонимную функцию и создавать функции из строк, используя new Function
:
//Examle of mkmdl() input:
let inputVar = {
'buttons': [{
"button": "I'm a button",
"command": "console.log('Im a command');"
},
{
"button": "Me too",
"command": "console.log('Me too');"
}
],
'message': "This here is our modle message.",
'image': 'URL(image URL)'
}
function mkmdl(obj) {
// this function makes model boxes from suppiled JSON object.
//image
//message
//button(s)
for (var i = 0, size = obj['buttons'].length; i < size; i++) {
console.log(i);
let v = obj["buttons"][i]["button"];
let x = new Function(obj["buttons"][i]["command"]);
var newElement = document.createElement("button");
newElement.onclick = () => x();
newElement.innerHTML = v;
document.getElementById("body").appendChild(newElement);
}
}
window.onload = mkmdl(inputVar);
window.onload = function() {
inputVar["buttons"][1]["command"]
};
<body id="body">
</body>