在window.onload函数中时未定义onclicked方法

时间:2019-03-28 12:44:05

标签: javascript html

我的onclick方法已定义,但是出现未定义的错误。

我想在我的JavaScript文件中调用一个函数,该文件被一个窗口包围。 onload = funktion()但当我单击复选框时会发生此错误:未捕获ReferenceError:handleAverageHight未定义     在HTMLInputElement.onclick(index.html?ID = 1:50)

window.onload=function(){

     var cb= document.getElementById('showAverage');
    //shows the average high or remove it 
                function handleAverageHight() {

                    //do something
                }
};

我要在其中调用的html:

<div class="form-check-inline">
                        <label class="form-check-label" >
                            <input id="show2D" type="checkbox" class="form-check-input" value=""/>
                        </label>
                    </div>

1 个答案:

答案 0 :(得分:0)

您已在另一个函数内声明了 handleAverageHight()函数。在JavaScript中,当您在函数内部声明变量或函数时,无法在该函数外部访问它。这称为本地范围。如果在外部声明变量或函数,则任何地方都可以访问它。它称为全球范围。在函数内部声明了 handleAverageHight 函数后,您将无法在函数外部引用该函数。这样就发生了错误。

您可以通过两种方式对其进行修复。

方法-01:
element.addEventListener()函数中使用window.onload

window.onload = function(){
    cb = //your check box

    function handleAverageHight(){
        // Your code goes here
    }

    cb.addEventListener("click", handleAverageHight);
}

方法-02:
handleAverageHight 用作全局变量,并对元素使用 onclick 属性。 [不推荐]

JS:

var handleAverageHeight;
window.onload = function(){
    cb = //your check box

    handleAverageHight = function(){
        // Your code goes here
    }
}

HTML:

<input type="checkbox" onclick="handleAverageHeight()" />