push()方法将元素添加进数组却无法提取,原因何在?
需求:遍历一个文件夹下的html文件,然后生成页面标题等数组。
问题:push进各数组的元素在console里可以看到,且数组长度正常,但是调用的时候显示为空。
// Add window load listener
window.addEventListener('load', showIndex);
function showIndex() {
const files = ['test', 'demo'];
for(let a = 0; a < 1; a++){
let partNames = [];
let sameParts = [];
let pageUrl = [];
let pageNames = [];
for(let i = 0; i < 4; i++){
// Open file
let indexs = new XMLHttpRequest();
indexs.open('GET', `../indexTest/${files[a]}${i}.html`,true);
indexs.onload = function() {
// Get part names and times
let partName = getPageNames(indexs, 'h2');
if(! partNames.includes(partName)){
partNames.push(partName);
sameParts.push(1);
} else {
sameParts[sameParts.length - 1]++;
}
// Get page relative path
pageUrl.push(`${files[a]}${i}.html`);
// Get page names
pageNames.push(getPageNames(indexs, 'h3'));
};
indexs.send();
}
// test
console.log(partNames, sameParts, pageUrl, pageNames, files);
console.log(partNames[0]);
console.log('partNames.length: ' + partNames.length);
console.log(Object.getOwnPropertyNames(pageUrl));
}
}
function getPageNames(obj, hx) {
let start = obj.responseText.indexOf(`<${hx}>`) + 4;
let end = obj.responseText.indexOf(`</${hx}>`);
return obj.responseText.substring(start, end);
}
console结果如下:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
for循环里是个异步操作吧,console写到indexs.onload里试试,我觉得用递归好点