TypeError:window [(“ check” + key)]不是函数

时间:2018-08-20 19:05:12

标签: javascript firefox

在使用JQuery 3.3.1的firefox 61.0.2 x64中,出现以下控制台错误;

  

TypeError:window [(“ check” + key)]不是函数

但是实际功能正常运行,并且仅在FF中引发此错误。但这具有破坏脚本的作用,并且不会以当前状态在该行下运行任何代码。

/* Save Check Box State for session */
var checkboxValues = JSON.parse(sessionStorage.getItem('checkboxValues')) || {},
    $checkboxes = $("#checkbox-container :checkbox");

    $checkboxes.on("change", function(){
    $checkboxes.each(function(){
        checkboxValues[this.id] = this.checked;
        });
        sessionStorage.setItem("checkboxValues", JSON.stringify(checkboxValues));
    });

$.each(checkboxValues, function(key, value) {
    $("#" + key).prop('checked', value);
    if (value === true )
    {
        window['check'+key]();
    }
});

check+key返回类似checkautoRefresh()的想法,即在页面上重新加载仍选中的所有复选框并调用(重新)函数。

令人反感的功能

function checkautoRefresh() {
    if ($("#autoRefresh").is(":checked")) {
        reloader=setTimeout("window.location.reload();", 30000);
    }
}

function autoRefresh(cb) {
    if (cb.checked) {
        reloader=setTimeout("window.location.reload();", 30000);
    } else {
        clearTimeout(reloader);
    }
}

我用完整的Java脚本和html复选框做了一个小提琴here。如果设置了复选框,请打开控制台并重新加载页面,您应该会收到错误消息,但是刷新功能将按预期运行。在IE中,没有错误,并且该部分下面的所有脚本都可以运行,并且我不记得FF的早期版本中存在此错误(尽管我无法立即返回所有版本并进行检查。)< / p>

我需要找到一种解决方法,或者是做我正在做的事情的更好方法,其中保存了复选框状态,然后在重新加载时调用,并且再次调用了函数以应用任何过滤器/设置等。此代码是一个有效的摘录从更大的页面中提取,该页面从数据库中提取数据以供用户显示。

我的JavaScript文件已加载到我的<head>代码的php部分中。

1 个答案:

答案 0 :(得分:0)

最后,移动;

$.each(checkboxValues, function(key, value) {
    $("#" + key).prop('checked', value);
    if (value === true )
    {
        window['check'+key]();
    }

到我已加载文件的底部似乎已解决了该问题。如果在.load.ready上调用代码,小提琴仍然会抛出相同的错误,我不知道为什么它可以正常工作。我还能够打开2个Firefox控制台,其中一个会引发错误,而另一个不会全部来自相同的网址...