错误功能未定义

时间:2014-10-26 04:23:40

标签: javascript

我试图为网页进行翻译,但不断收到错误" 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>

我是如何定义这个功能的,以及我在哪里定义它。

<button onclick="changeLocale();">Change</button>

3 个答案:

答案 0 :(得分:1)

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>

或者如果您在加载后必须定义它,请尝试

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

按照上面的定义后,您的按钮应该可以正常工作。

<button onclick="changeLocale();">Change</button>

答案 1 :(得分:0)

该功能可以独立存在,它不应该在window.onLoad内。

答案 2 :(得分:0)

您必须删除window.onload=function之外的函数changeLocale。这是因为范围问题。

在window.onload函数中定义changeLocale时,changeLocale仅在window.onload函数的范围内定义。在html中,onclick只能访问全局窗口对象的范围。由于它在窗口范围内没有看到名为changeLocale的函数,因此认为它未定义。要解决这个问题,你必须在window.onload作用域之外使用changeLocale函数并在&#34; global&#34;上声明它。窗口范围。