Javascript 从数组中检索数据会导致空/未定义
嗨,伙计们,我正在尝试控制台从数组记录数据,但URL和图像总是空的或未定义的。我尝试了不同的方法,但没有任何帮助 这是菜单中的拖放功能,我正在将这些项目拖到div#main#u仪表板,需要获取图像的href、innerText和srcJavascript 从数组中检索数据会导致空/未定义,javascript,jquery,laravel,Javascript,Jquery,Laravel,嗨,伙计们,我正在尝试控制台从数组记录数据,但URL和图像总是空的或未定义的。我尝试了不同的方法,但没有任何帮助 这是菜单中的拖放功能,我正在将这些项目拖到div#main#u仪表板,需要获取图像的href、innerText和src main_dashboard_items=document.getElementById('main_dashboard').children; 让main_dashboard_items_array=[]; /*让主仪表板项目=[]; for(设i=0;i返回
main_dashboard_items=document.getElementById('main_dashboard').children;
让main_dashboard_items_array=[];
/*让主仪表板项目=[];
for(设i=0;i返回未定义
//console.log(main_dashboard_items[i].getAttribute(“href”)-->返回“null”
let item_arr={'url':主仪表板_items[i].getAttribute(“href”),
“文本”:主仪表板项目[i]。innerText,
“图像”:主仪表板项[i]。子项[0]。子项[0]。currentSrc
};
主仪表板项目数组推送(项目数组);
日志(主仪表板项目数组);
}
您的代码抛出错误“UncaughtTypeError:无法读取null的属性'children',有关详细信息,请参阅开发人员工具>控制台
您应该处理代码中的空值,如null、undefined。只需将代码更改为:
let main_dashboard_items = document.getElementById('main_dashboard').children;
let main_dashboard_items_array = [];
/*let main_dashboard_items = [];
for (let i = 0; i < main_dashboard_items_html.length; i++) {
// At this point we could also push the elements to an array
main_dashboard_items.push(main_dashboard_items_html[i]);
}*/
for(let i=0; i<main_dashboard_items.length; i++){
// console.log(main_dashboard_items[i].children[0].currentSrc); --> returned undefined
// console.log(main_dashboard_items[i].href); --> returned undefined
//console.log(main_dashboard_items[i].getAttribute("href")) --> returned "null"
let item_arr = {'url': main_dashboard_items[i].getAttribute("href"),
'text': main_dashboard_items[i].innerText,
'image': main_dashboard_items[i].children[0] ? (main_dashboard_items[i].children[0].children && main_dashboard_items[i].children[0].children.length > 0 ? main_dashboard_items[i].children[0].children[0].currentSrc : "") : ""
};
main_dashboard_items_array.push(item_arr);
console.log(main_dashboard_items_array);
}
main_dashboard_items=document.getElementById('main_dashboard').children;
让main_dashboard_items_array=[];
/*让主仪表板项目=[];
for(设i=0;i返回未定义
//console.log(main_dashboard_items[i].getAttribute(“href”)-->返回“null”
let item_arr={'url':主仪表板_items[i].getAttribute(“href”),
“文本”:主仪表板项目[i]。innerText,
“图像”:主仪表板项[i]。子项[0]?(主仪表板项[i]。子项[0]。子项和主仪表板项[i]。子项[0]。子项[0]。子项。长度>0?主仪表板项[i]。子项[0]。子项[0]。当前SRC:):“”
};
主仪表板项目数组推送(项目数组);
日志(主仪表板项目数组);
}
编辑
现在试试这个:
let main_dashboard_items = document.getElementById('main_dashboard').children;
let main_dashboard_items_array = [];
/*let main_dashboard_items = [];
for (let i = 0; i < main_dashboard_items_html.length; i++) {
// At this point we could also push the elements to an array
main_dashboard_items.push(main_dashboard_items_html[i]);
}*/
for(let i=0; i<main_dashboard_items.length; i++){
// console.log(main_dashboard_items[i].children[0].currentSrc); --> returned undefined
// console.log(main_dashboard_items[i].href); --> returned undefined
//console.log(main_dashboard_items[i].getAttribute("href")) --> returned "null"
let item_arr = {'url': main_dashboard_items[i].children[0].getAttribute("href"),
'text': main_dashboard_items[i].children[0].children[1].innerText,
'image': main_dashboard_items[i].children[0].children[0].children[0].src,
'anotherImage' : main_dashboard_items[i].children[0].children[0].children[1].src
};
main_dashboard_items_array.push(item_arr);
console.log(main_dashboard_items_array);
}
main_dashboard_items=document.getElementById('main_dashboard').children;
让main_dashboard_items_array=[];
/*让主仪表板项目=[];
for(设i=0;i返回未定义
//console.log(main_dashboard_items[i].getAttribute(“href”)-->返回“null”
let item_arr={'url':主仪表板_items[i]。子项[0]。getAttribute(“href”),
“文本”:主面板项[i]。子项[0]。子项[1]。innerText,
“图像”:主仪表板项目[i]。子项[0]。子项[0]。子项[0]。子项[0]。src,
“anotherImage”:主仪表板项目[i]。子项[0]。子项[0]。子项[0]。子项[1]。src
};
主仪表板项目数组推送(项目数组);
日志(主仪表板项目数组);
}
请提供代码而不是屏幕截图,查看此“”已更新。抱歉。children[0]。children[0
你确定你没有重复吗?嗯,这是一个javascript问题,请发布呈现的html。让我试试看,这可能是有意的,你永远不知道。你在这里运行的内容与实际项目中OP的内容不同。这可能是另一种情况,伙计。它只从拖到m的最新内容中获取url艾努仪表板