Javascript函数无法识别

时间:2017-01-20 02:00:06

标签: javascript html function onclick href

我在javascript中没有很多知识,所以我不知道这里有什么问题, 我在js中动态创建div,每个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) +"'

我改变了引号“”的位置并且功能正常工作但是在页面加载时执行,它不等待点击。

2 个答案:

答案 0 :(得分:1)

如果您正在执行以下操作,您的代码应该有效:

&#13;
&#13;
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);
}
&#13;
<div id="menu"></div>
&#13;
&#13;
&#13;

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

&#13;
&#13;
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);
}
&#13;
<div id="menu"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

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

你忘了引用参数。