javascript - JS 函数只在浏览器控制台上工作
问题描述
我有以下功能。
function loadSplides() {
let elms = document.querySelectorAll('.splide');
console.log("document.querySelectorAll('.splide') JS COMMAND")
console.log(elms)
for ( let i = 0; i < elms.length; i++ ) {
console.log('loop')
console.log("LOOP", i)
new Splide( elms[i], {
type: 'loop',
fixedHeight: '20rem',
cover: true,
} ).mount();
}
}
$(document).ready(() => {
$('#index').remove()
const sponsors = async () => {requestSponsors()}
sponsors().then(() => {loadSplides()})
})
返回一个空数组,但是当elms
我在浏览器控制台上执行相同的命令document.querySelectorAll('.splide');
时,返回的是一个包含 5 个元素的数组
解决方案
这些元素似乎是动态加载的。可能由requestSponsors()
? 如果是这种情况,那么您将需要等待该操作。 假设它返回 aPromise
,目前它的结果Promise
正在丢失。您可以await
直接在您的async
函数中使用它:
const sponsors = async () => {await requestSponsors()}
Promise
或者通过删除花括号返回函数的结果:
const sponsors = async () => requestSponsors()
或通过显式返回:
const sponsors = async () => {return requestSponsors()}
如果requestSponsors()
不返回 aPromise
那么您需要检查并可能修改它以查看其异步操作(加载这些元素,可能来自 AJAX 操作?)可以等待。
推荐阅读
- azure - 运行容器化应用程序时的身份?
- magento2 - 未捕获的错误:找不到类“GuzzleHttp\Client”
- c# - C#如何访问NCrontab的非公共成员?
- python - 如何在 Pipfile 中指定特定于操作系统的轮文件
- python - Dynamo - 仅当其值相同或记录不存在时才添加项目
- angular - 为什么 observable.subscribe 仅适用于构造函数
- amp-html - 将预订广告翻译到 AMP 页面
- grafana - Grafana+InfluxDB:根据自定义变量的值显示系列
- string - 如何保存渲染的模板而不是打印到 os.Stdout?
- c# - Outlook 自动完成列表从 .dat 文件中读取