Javascript 未定义错误函数
我正在尝试对网页进行翻译,但不断收到一个错误:“changeLocale()”未定义Javascript 未定义错误函数,javascript,Javascript,我正在尝试对网页进行翻译,但不断收到一个错误:“changeLocale()”未定义 <script type="text/javascript"> window.onload=function(){ function changeLocale(){ if (document.getElementsByClassName('locFin').style.display == 'block') { document.getElements
<script type="text/javascript">
window.onload=function(){
function changeLocale(){
if (document.getElementsByClassName('locFin').style.display == 'block') {
document.getElementsByClassName('locFin').style.display = 'none';
document.getElementsByClassName('locEn').style.display = 'block';
} else{
document.getElementsByClassName('locEn').style.display = 'none';
document.getElementsByClassName('locFin').style.display = 'block';
}
}
}
</script>
window.onload=function(){
函数changeLocale(){
if(document.getElementsByClassName('locFin').style.display=='block'){
document.getElementsByClassName('locFin').style.display='none';
document.getElementsByClassName('locEn').style.display='block';
}否则{
document.getElementsByClassName('locEn').style.display='none';
document.getElementsByClassName('locFin').style.display='block';
}
}
}
这就是我定义函数的方式,这里是我调用它的地方
<button onclick="changeLocale();">Change</button>
更改
函数可以独立运行,它不应位于窗口内。onLoad
changeLocale()未在全局范围内定义,它仅在window.onLoad范围内定义。尝试在window.onload处理程序之外定义函数
<script type="text/javascript">
function changeLocale(){
if (document.getElementsByClassName('locFin').style.display == 'block') {
document.getElementsByClassName('locFin').style.display = 'none';
document.getElementsByClassName('locEn').style.display = 'block';
} else{
document.getElementsByClassName('locEn').style.display = 'none';
document.getElementsByClassName('locFin').style.display = 'block';
}
}
</script>
函数changeLocale(){
if(document.getElementsByClassName('locFin').style.display=='block'){
document.getElementsByClassName('locFin').style.display='none';
document.getElementsByClassName('locEn').style.display='block';
}否则{
document.getElementsByClassName('locEn').style.display='none';
document.getElementsByClassName('locFin').style.display='block';
}
}
或者,如果必须在加载后定义它,请尝试
<script type="text/javascript">
var changeLocale;
window.onload=function(){
changeLocale = function(){
if (document.getElementsByClassName('locFin').style.display == 'block') {
document.getElementsByClassName('locFin').style.display = 'none';
document.getElementsByClassName('locEn').style.display = 'block';
} else{
document.getElementsByClassName('locEn').style.display = 'none';
document.getElementsByClassName('locFin').style.display = 'block';
}
}
}
</script>
var-changeLocale;
window.onload=function(){
changeLocale=函数(){
if(document.getElementsByClassName('locFin').style.display=='block'){
document.getElementsByClassName('locFin').style.display='none';
document.getElementsByClassName('locEn').style.display='block';
}否则{
document.getElementsByClassName('locEn').style.display='none';
document.getElementsByClassName('locFin').style.display='block';
}
}
}
如上所述定义之后,您的按钮应该可以工作
<button onclick="changeLocale();">Change</button>
更改
您必须在窗口外删除函数changeLocale。onload=function
。这是因为范围存在问题
在window.onload函数内定义changeLocale时,changeLocale仅在window.onload函数的范围内定义onclick,只能访问全局窗口对象的范围。因为它在窗口范围中没有看到名为changeLocale的函数,所以它认为它没有定义。要解决此问题,必须将changeLocale函数置于window.onload范围之外,并在“全局”窗口范围内声明它。这是一个范围问题。函数
changeLocale()
是在另一个函数中定义的,在全局范围内不可用。事件属性,如onclick
,只能到达全局范围内的名称,而changeLocale()
不是全局范围。它只存在于窗口中。onload
处理程序函数
是在中定义的。如果您只是定义一个函数,甚至可以在DOM呈现完成之前执行,因此不需要将其包装到窗口中。onload
。