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>
我对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>