Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未定义错误函数_Javascript - Fatal编程技术网

Javascript 未定义错误函数

Javascript 未定义错误函数,javascript,Javascript,我正在尝试对网页进行翻译,但不断收到一个错误:“changeLocale()”未定义 <script type="text/javascript"> window.onload=function(){ function changeLocale(){ if (document.getElementsByClassName('locFin').style.display == 'block') { document.getElements

我正在尝试对网页进行翻译,但不断收到一个错误:“changeLocale()”未定义

<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