Javascript ReferenceError:未定义myFunction()

Javascript ReferenceError:未定义myFunction(),javascript,html,jsf,Javascript,Html,Jsf,我在运行时遇到此错误。我不知道为什么它显示myFunction()没有定义。单击按钮时加载函数的方式是否有任何问题 这是我到目前为止的代码 缩进.xhtml .code str{color:#080;} .code elem{color:#f00;} .code注释{color:#00f;} 常量关键字={ IF:{style:“code elem”,缩进:4}, ENDIF:{style:“code elem”,缩进:-4}, 如果列表:{style:“code str”,缩进:4}, e

我在运行时遇到此错误。我不知道为什么它显示myFunction()没有定义。单击按钮时加载函数的方式是否有任何问题

这是我到目前为止的代码

缩进.xhtml


.code str{color:#080;}
.code elem{color:#f00;}
.code注释{color:#00f;}

常量关键字={ IF:{style:“code elem”,缩进:4}, ENDIF:{style:“code elem”,缩进:-4}, 如果列表:{style:“code str”,缩进:4}, endiListing:{style:“code str”,缩进:-4}, 变量:{style:“代码注释”,缩进:0}, 清单:{style:“代码注释”,缩进:0} }; window.onload=函数myFunction(){ 设缩进=0; document.getElementById(“demo”).innerHTML=document.getElementById(“text1”).value.split(/[\r\n]+/).map(行=>{ const oldIndent=缩进; line=line.trim().replace(/####([A-Z]+)(.*)###/g,(m,关键字,arg)=>{ 常量参数=关键字[关键字]; 如果(!param) 返回m; 缩进+=参数缩进; 返回`${m}`; }); 返回“”。重复(数学最小值(缩进,旧缩进))+行; }).加入(“
”); }
请问,有人能帮我找到这个问题吗?
按下按钮后,它应该为代码提供一些颜色。

您的
onclick
-属性样式事件处理程序希望找到一个名为
myFunction
的全局函数,但当您使用这样的命名函数表达式时:

window.onload = function myFunction() {
    // ...
};
函数名不会添加到该表达式出现的作用域中(旧版本的IE除外)

函数声明添加到范围中,因此可以使用声明和赋值:

function myFunction() {
    // ...
}
window.onload = myFunction;


我强烈建议不要使用
onxyz
-属性样式的事件处理程序,尤其是因为它们需要全局函数,全局名称空间已经过于拥挤并且充满冲突。相反,将代码包装在范围结构(IIFE、模块等)中,并使用现代事件处理(
addEventListener
等)。请注意,如果您在JSF页面中通过
id
查找元素,则客户端id是而不是您(默认情况下)给出元素的
id
,完整解释如下。(感谢您在评论中指出这一点。)

非常感谢。我已经做了你所说的更改,但是现在它显示出另一个错误。TypeError:document.getElementById(…)为空。我该怎么办?@Sonney-谢谢你的链接。这消除了我的一些疑虑。但是,因为我对这一点非常陌生,对javascript不太了解。您能否帮助我告诉我如何在此代码中使用addEventListener。错误出现在
文档上。getElementByID(“text1”)
查看您有一个新问题。接受这个问题的答案,并创建一个新的问题,使用“我已回滚您的编辑”将答案折叠到问题中。我们不是这样做的。这个问题仍然是一个问题,答案就是答案。问题不应该是移动目标,好的。谢谢。:)
function myFunction() {
    // ...
}
window.onload = myFunction;