javascript - 从数组中检索数据给出空/未定义
问题描述
大家好,我正在尝试从数组中控制台记录我的数据,但 URL 和图像始终为空或未定义。我尝试了不同的方法,但没有任何帮助。
它是菜单中的拖放功能,我将这些项目拖到 div#main_dashboard 并需要获取图像的 href、innerText 和 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].getAttribute("href"),
'text': main_dashboard_items[i].innerText,
'image': main_dashboard_items[i].children[0].children[0].currentSrc
};
main_dashboard_items_array.push(item_arr);
console.log(main_dashboard_items_array);
}
<div class="col-10" id="main_dashboard">
@if(!empty($dashboard_preferences))
@foreach($dashboard_preferences as $preference)
<a href="{{ url($preference->url) }}" class="draggable" draggable="true" style="cursor: grab;"><img src="{{$preference->image}}" alt="new-job" class="logout-icon1">{{$preference->text}}</a>
@endforeach
@else
<ul class="page-sidebar-menu dropzone">
<a href="{{ url('/new-job') }}" draggable="true" style="cursor: grab; class="draggable">
<div class="page-sidebar-menu-icon">
<img src="{{ asset('images/Spire-icons-png/New-Job-Dark-Navy.png') }}" alt="N J" class="img-top"/>
<img src="{{ asset('images/Spire-icons-png/New-Job-sky-blue.png') }}" alt="N J"/>
</div>
<span class="title">New Job</span>
</a>
</ul>
@endif
</div>
解决方案
您的代码抛出错误“Uncaught TypeError: Cannot read property 'children' of null”,有关更多详细信息,请参阅开发人员工具 > 控制台。
您应该处理任何空值(如 null、未定义)的代码。只需将您的代码更改为:
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);
}
编辑
现在试试这个:
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);
}
推荐阅读
- ios - 领域模型类的问题
- mysql - 如何通过mysql查询从考勤表中获取考勤报告?
- java - Java VisualVM 如何显示未运行/未完成的线程?
- node.js - 如何为 Auth0 规则编写单元测试
- r - 小波函数:将matlab小波代码重写为R
- protractor - 我们可以通过 cucumberjs 的钩子从命令提示符捕获场景的错误日志吗
- javascript - 表格内容可编辑事件
- c# - 获取 Xamarin.Forms 中的条目宽度
- javascript - 屏幕锁定时javascript setInterval暂停(IOS)
- angular - 如何在 Angular 中关闭 ng-bootstrap 模态