函数未在javascript中定义

时间:2018-05-18 22:49:13

标签: javascript jquery

你可以帮帮我吗?

我在一个文件中使用脚本来调用另一个文件中的其他功能,但我没有定义功能。所以我开始寻找这种方法,但我没有得到任何积极的结果。检查下面的代码:

的index.html

$(document).ready(function(){
    setInterval(function(){
        lAs = new loadAsync();
    }, 900);
});


JS / plugins.js

function window.loadAsync() {
    $(".loadAsync").each(function(index, element){
        $(element).attr("src", $(element).attr("data-src"));
    });
}

那么,我该怎么做才能解决这个问题呢?谢谢。

@edit:

<script src="js/plugins.js"></script>

我已经在 index.html

中写了这个

2 个答案:

答案 0 :(得分:3)

首先,你的语法错了。标识符中可能没有.。只需使用loadAsync,除非您将其嵌套在另一个范围内,否则它将是全局的。

您还可以通过回调调用.attr()而不是使用.each()来提高jQuery的效率。

最后,您似乎不太可能想要使用new来调用该函数。我更改了下面的代码,只是将其作为回调传递给setInterval。我还正确地声明了lAs变量。

function loadAsync() {
    $(".loadAsync").attr("src", function(){
        return $(this).attr("data-src");
    });
} 
var lAs;
$(document).ready(function(){
    lAs = setInterval(loadAsync, 900);
});

当然,如果没有jQuery,这一切都可以轻松完成。

function loadAsync() {
  for (const el of document.querySelectorAll(".loadAsync")) {
    el.src = el.dataset.src;
  }
} 
var lAs;
document.addEventListener("DOMContentLoaded", function(){
    lAs = setInterval(loadAsync, 900);
});

答案 1 :(得分:0)

首先,function window.whatever() {}是错误的(您可以在其中看到正在使用的SO线程的链接吗?)。

即使没有这个错误,你也会收到错误,请确保:
1. loadAsyncplugins文件的全局范围内声明 2.您正确包括js/plugins.js。继续在foo bar;中插入js/plugins.js,然后检查是否有SyntaxError(在其他JS文件之前包含它),如果不是,则表示您没有正确包含它