虽然您可以通过确保onclick
属性字符串包含 function (例如
)来修复它
onclick='console.log(2)'
内联处理程序被广泛认为是相当差的做法,因为它们有很多作用域问题和字符串转义问题。最好使用Javascript添加侦听器。在#container
上使用事件委托-单击其中的按钮时,请检查按钮的id
,并用该printIt
调用id
:
var question = `
<div class='title'>
<h1>${questions[cur].title}</h1>
<p>${questions[cur].choices.map((item,i) => `
<button class='answers' id=${i}>${item}</button><br />
`).join('')}</p>
</div>
`;
//put on page
$("#container").append(question);
$("#container").on('click','button.answers',function() {
printIt(this.id);
});
但是数字索引ID也是一种代码味道,并且在单个文档中具有重复ID是无效的HTML。除非需要它们,否则可以通过单击click来检查其父容器中被单击按钮的索引,从而完全避免i
的需要:
var question = `
<div class='title'>
<h1>${questions[cur].title}</h1>
<p>${questions[cur].choices.map((item) => `
<button class='answers'>${item}</button><br />
`).join('')}</p>
</div>
`;
//put on page
$("#container").append(question);
$("#container").on('click',function() {
const index = [...this.parentElement.children].indexOf(this);
printIt(index);
});
本文链接:https://www.f2er.com/3162354.html