我在一个文件中使用脚本来调用另一个文件中的其他功能,但我没有定义功能。所以我开始寻找这种方法,但我没有得到任何积极的结果。检查下面的代码:
的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
中写了这个答案 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. loadAsync
在plugins
文件的全局范围内声明
2.您正确包括js/plugins.js
。继续在foo bar;
中插入js/plugins.js
,然后检查是否有SyntaxError
(在其他JS文件之前包含它),如果不是,则表示您没有正确包含它