我有一个问题,我在javascript中执行的程序中存在函数问题。
当你单击一个段落时,该函数应该可以工作,但是当我点击时,javascript控制台会抛出这个:"未捕获的ReferenceError:donethingy未定义 行:1"。
JS:
window.onload = function(){
var thy = document.getElementById("thy");
var commanderIssue = document.getElementById("commanderIssue");
var listado = document.getElementById("thaCosa");
var thyLy = document.getElementsByTagName("p");
var nli;
var thyText;
var inserting = "a";
var commander = "b";
thy.onclick = function(){
inserting = "* " + prompt("Create a new item");
nli = document.createElement("p");
thyText = document.createTextNode(inserting);
nli.appendChild(thyText);
listado.appendChild(nli);
thyLy = document.getElementsByTagName("p");
}
thyLy.onclick = function donethingy(){
// thyLy.textDecoration.overline;
alert("done");
}
commanderIssue.onclick = function(){
alert("this thing is");
}
}
答案 0 :(得分:3)
使用您使用的语法,名称donethingy
实际上不会成为函数的名称,因为您将函数的代码直接分配给onclick
的{{1}}属性。
你可以这样做:
thyLy
但是,当您在一个语句中创建并分配函数时,该函数实际上会变为匿名,因为它是通过您为其分配的属性进行存储和访问的。
创建函数声明或匿名函数的决定需要考虑以下因素:
答案 1 :(得分:2)
您不要将变量或onclick
属性设置为定义为:
obj.onclick = function <name>() {}
您设置为匿名函数,就像您为commanderIssue.onclick
所做的那样。
只需删除该函数的名称即可使其匿名:
thyLy.onclick = function() {
alert("done");
}
答案 2 :(得分:1)
记住有两种定义函数的方法很好:
声明,在您调用它们时执行:
function donethingy() { ... }
表达式,在执行变量语句时执行:
thyLy.onclick = function() { ... }