Javascript 函数无法识别

Javascript function isn't recognized

我对javascript的了解不多,所以我不知道这里有什么问题, 我在 js 中动态创建 divs,每个 div 在单击时调用一个函数,但该函数未被识别。这是部分代码

for (......) {
  var listatema = document.createElement("div");
  listatema.innerHTML += "<a href='javascript: void(0)' onClick='functest(" + pag + ")'>" + temat + "</a>";
  document.getElementById('menu').appendChild(listatema);}
}

"tema"是一个文本,函数"functest"有一个参数"pag[aux]",这是一个数字。

函数是:

function functest(arg){
   console.log(arg)
}

我尝试的其他替代方法是更改​​:onClick='"+ functest(pag) +"':

我改变了引号“”的位置,功能运行良好,但它是在页面加载时执行的,不等待点击。

onClick='functest(\""+ pag +"\")'

你忘了引用参数。

如果您执行以下操作,您的代码应该可以正常工作:

function functest(arg) {
  console.log(arg);
}

for (var i = 0; i < 10; i++) {
  var listatema = document.createElement("div");
  listatema.innerHTML += "<a href='javascript: void(0)' onClick='functest(" + i + ")'>" + i + "</a>";
  document.getElementById('menu').appendChild(listatema);
}
<div id="menu"></div>

但是,我建议使用 addEventListener 或在文档元素对象上设置 onClick 处理程序,而不是设置 innerHTML。请注意,不建议设置 innerHTML,尤其是在呈现用户输入时。参见 https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML#Security_considerations。在你的情况下,这可能不是真正的问题,但如果可以的话,最好避免它:)

for (var i = 0; i < 5; i++) {
  var wrapper = document.createElement("div");
  var listatema = document.createElement("a");
  listatema.textContent = i;
  listatema.href = "javascript:void(0)";
  listatema.addEventListener('click', function(e) {
    console.log(this.i);
  }.bind({ i : i }));
  wrapper.appendChild(listatema);
  document.getElementById('menu').appendChild(wrapper);
}
<div id="menu"></div>