【BUG解决方案】jQuery数组中包含数据,但通过 .length 获得的数组长度始终为0

news2024/11/30 13:42:51

0. BUG展示

var lels = [];
for (var i = 0; i < maxDevNums + 1; i++) {
    lels.push([]);
}
$.ajax({
    type : "post",
    async : true,
    url : "/sc/comb/history/data",
    data : {},
    dataType : "json",
    success : function (result) {
        if (result) {
            for (let i = 0; i < result.length; i++) {
                lels[result[i].combDevId].push(result[i].combLel);
            }
            console.log(lels);
        }
        console.log("在ajax请求中获取数组长度:" + lels[1].length)
    },
    error : function(errorMsg) {
        alert("图表请求数据失败");
    }
})

console.log("在ajax请求外获取数组长度:" + lels[1].length);

for (let i = 1; i < lels.length; i++) {
    var gaugeChart = echarts.init(document.getElementById("echarts-gauge-chart" + i));
    if (lels[i].length > 0) {
        var lel = lels[i][lels[i].length - 1];
        gaugeOption.series[0].data = [{value: lel, name: 'lel'}]
    } else {
        gaugeOption.series[0].data = [{value: 0, name: 'offline'}]
    }
    gaugeChart.setOption(gaugeOption);
    $(window).resize(gaugeChart.resize);
}

在这里插入图片描述
在这里插入图片描述

1. BUG修复

async : true修改为async : false
async : true修改为async : false
async : true修改为async : false

var lels = [];
for (var i = 0; i < maxDevNums + 1; i++) {
    lels.push([]);
}
$.ajax({
    type : "post",
    async : false,
    url : "/sc/comb/history/data",
    data : {},
    dataType : "json",
    success : function (result) {
        if (result) {
            for (let i = 0; i < result.length; i++) {
                lels[result[i].combDevId].push(result[i].combLel);
            }
            console.log(lels);
        }
        console.log("在ajax请求中获取数组长度:" + lels[1].length)
    },
    error : function(errorMsg) {
        alert("图表请求数据失败");
    }
})

console.log("在ajax请求外获取数组长度:" + lels[1].length);

for (let i = 1; i < lels.length; i++) {
    var gaugeChart = echarts.init(document.getElementById("echarts-gauge-chart" + i));
    if (lels[i].length > 0) {
        var lel = lels[i][lels[i].length - 1];
        gaugeOption.series[0].data = [{value: lel, name: 'lel'}]
    } else {
        gaugeOption.series[0].data = [{value: 0, name: 'offline'}]
    }
    gaugeChart.setOption(gaugeOption);
    $(window).resize(gaugeChart.resize);
}

在这里插入图片描述
在这里插入图片描述

2. 原因分析

其实我也不太清楚,有大佬清楚的话,可以在评论区发一下

3. 附:完整代码

<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
    <th:block th:include="include :: header('百度ECharts')" />
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
    <div class="row">
        <div class="col-sm-3">
            <div class="ibox float-e-margins">
                <div class="ibox-title">
                    <h5>设备1</h5>
                    <!--<div class="ibox-tools">
                        <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                            <i class="fa fa-wrench"></i>
                        </a>
                        &lt;!&ndash;<ul class="dropdown-menu dropdown-user">
                            <li><a href="#">查看当前设备详细信息</a></li>
                            &lt;!&ndash;<li><a href="#">查看历史可燃气体浓度</a></li>&ndash;&gt;
                            <li><a href="javascript:void(0)" οnclick="$.modal.open('历史可燃气体浓度', '/sc/map/comb-history');">查看历史可燃气体浓度</a></li>
                        </ul>&ndash;&gt;
                    </div>-->
                </div>
                <div class="ibox-content">
                    <div class="echarts" id="echarts-gauge-chart1"></div>
                    <div align="right"><button type="button" class="btn btn-success btn-sm" href="javascript:void(0)" onclick="$.modal.open('历史可燃气体浓度', '/sc/comb/history');">历史可燃气体浓度与设备信息</button></div>
                </div>
            </div>
        </div>
        <div class="col-sm-3">
            <div class="ibox float-e-margins">
                <div class="ibox-title">
                    <h5>设备2</h5>
                </div>
                <div class="ibox-content">
                    <div class="echarts" id="echarts-gauge-chart2"></div>
                    <div align="right"><button type="button" class="btn btn-success btn-sm" href="javascript:void(0)" onclick="$.modal.open('历史可燃气体浓度', '/sc/comb/history');">历史可燃气体浓度与设备信息</button></div>
                </div>
            </div>
        </div>
        <div class="col-sm-3">
            <div class="ibox float-e-margins">
                <div class="ibox-title">
                    <h5>设备3</h5>
                </div>
                <div class="ibox-content">
                    <div class="echarts" id="echarts-gauge-chart3"></div>
                    <div align="right"><button type="button" class="btn btn-success btn-sm" href="javascript:void(0)" onclick="$.modal.open('历史可燃气体浓度', '/sc/comb/history');">历史可燃气体浓度与设备信息</button></div>
                </div>
            </div>
        </div>
        <div class="col-sm-3">
            <div class="ibox float-e-margins">
                <div class="ibox-title">
                    <h5>设备4</h5>
                </div>
                <div class="ibox-content">
                    <div class="echarts" id="echarts-gauge-chart4"></div>
                    <div align="right"><button type="button" class="btn btn-success btn-sm" href="javascript:void(0)" onclick="$.modal.open('历史可燃气体浓度', '/sc/comb/history');">历史可燃气体浓度与设备信息</button></div>
                </div>
            </div>
        </div>
        <div class="col-sm-3">
            <div class="ibox float-e-margins">
                <div class="ibox-title">
                    <h5>设备5</h5>
                </div>
                <div class="ibox-content">
                    <div class="echarts" id="echarts-gauge-chart5"></div>
                    <div align="right"><button type="button" class="btn btn-success btn-sm" href="javascript:void(0)" onclick="$.modal.open('历史可燃气体浓度', '/sc/comb/history');">历史可燃气体浓度与设备信息</button></div>
                </div>
            </div>
        </div>
        <div class="col-sm-3">
            <div class="ibox float-e-margins">
                <div class="ibox-title">
                    <h5>设备6</h5>
                </div>
                <div class="ibox-content">
                    <div class="echarts" id="echarts-gauge-chart6"></div>
                    <div align="right"><button type="button" class="btn btn-success btn-sm" href="javascript:void(0)" onclick="$.modal.open('历史可燃气体浓度', '/sc/comb/history');">历史可燃气体浓度与设备信息</button></div>
                </div>
            </div>
        </div>
        <div class="col-sm-3">
            <div class="ibox float-e-margins">
                <div class="ibox-title">
                    <h5>设备7</h5>
                </div>
                <div class="ibox-content">
                    <div class="echarts" id="echarts-gauge-chart7"></div>
                    <div align="right"><button type="button" class="btn btn-success btn-sm" href="javascript:void(0)" onclick="$.modal.open('历史可燃气体浓度', '/sc/comb/history');">历史可燃气体浓度与设备信息</button></div>
                </div>
            </div>
        </div>
        <div class="col-sm-3">
            <div class="ibox float-e-margins">
                <div class="ibox-title">
                    <h5>设备8</h5>
                </div>
                <div class="ibox-content">
                    <div class="echarts" id="echarts-gauge-chart8"></div>
                    <div align="right"><button type="button" class="btn btn-success btn-sm" href="javascript:void(0)" onclick="$.modal.open('历史可燃气体浓度', '/sc/comb/history');">历史可燃气体浓度与设备信息</button></div>
                </div>
            </div>
        </div>
        <div class="col-sm-3">
            <div class="ibox float-e-margins">
                <div class="ibox-title">
                    <h5>设备9</h5>
                </div>
                <div class="ibox-content">
                    <div class="echarts" id="echarts-gauge-chart9"></div>
                    <div align="right"><button type="button" class="btn btn-success btn-sm" href="javascript:void(0)" onclick="$.modal.open('历史可燃气体浓度', '/sc/comb/history');">历史可燃气体浓度与设备信息</button></div>
                </div>
            </div>
        </div>
        <div class="col-sm-3">
            <div class="ibox float-e-margins">
                <div class="ibox-title">
                    <h5>设备10</h5>
                </div>
                <div class="ibox-content">
                    <div class="echarts" id="echarts-gauge-chart10"></div>
                    <div align="right"><button type="button" class="btn btn-success btn-sm" href="javascript:void(0)" onclick="$.modal.open('历史可燃气体浓度', '/sc/comb/history');">历史可燃气体浓度与设备信息</button></div>
                </div>
            </div>
        </div>
        <div class="col-sm-3">
            <div class="ibox float-e-margins">
                <div class="ibox-title">
                    <h5>设备11</h5>
                </div>
                <div class="ibox-content">
                    <div class="echarts" id="echarts-gauge-chart11"></div>
                    <div align="right"><button type="button" class="btn btn-success btn-sm" href="javascript:void(0)" onclick="$.modal.open('历史可燃气体浓度', '/sc/comb/history');">历史可燃气体浓度与设备信息</button></div>
                </div>
            </div>
        </div>
        <div class="col-sm-3">
            <div class="ibox float-e-margins">
                <div class="ibox-title">
                    <h5>设备12</h5>
                </div>
                <div class="ibox-content">
                    <div class="echarts" id="echarts-gauge-chart12"></div>
                    <div align="right"><button type="button" class="btn btn-success btn-sm" href="javascript:void(0)" onclick="$.modal.open('历史可燃气体浓度', '/sc/comb/history');">历史可燃气体浓度与设备信息</button></div>
                </div>
            </div>
        </div>
    </div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: echarts-js" />
<script type="text/javascript">
    $(function () {
        var maxDevNums = 12;

        var gaugeData = [{value: 98, name: 'lel'}]

        var gaugeOption = {
            /*title : {
                text: '运行状态: '
            },*/
            tooltip : {
                formatter: "{a} <br/>{c} {b}"
            },
            /*toolbox: {
                show : true,
                feature : {
                    dataView : {show: true, readOnly: false},
                    mark : {show: true},
                    /!*restore : {show: true},
                    saveAsImage : {show: true}*!/
                }
            },*/
            series : [
                {
                    name:'浓度',
                    type:'gauge',
                    min:0,
                    max:100,
                    splitNumber:10,
                    axisLine: {            // 坐标轴线
                        lineStyle: {       // 属性lineStyle控制线条样式
                            width: 10
                        }
                    },
                    axisTick: {            // 坐标轴小标记
                        length :15,        // 属性length控制线长
                        lineStyle: {       // 属性lineStyle控制线条样式
                            color: 'auto'
                        }
                    },
                    splitLine: {           // 分隔线
                        length :20,        // 属性length控制线长
                        lineStyle: {       // 属性lineStyle(详见lineStyle)控制线条样式
                            color: 'auto'
                        }
                    },
                    title : {
                        textStyle: {       // 其余属性默认使用全局文本样式,详见TEXTSTYLE
                            fontWeight: 'bolder',
                            fontSize: 20,
                            fontStyle: 'italic'
                        }
                    },
                    detail : {
                        fontSize: 20,
                        formatter: '{value}%',
                        textStyle: {       // 其余属性默认使用全局文本样式,详见TEXTSTYLE
                            fontWeight: 'bolder'
                        }
                    },
                    data: gaugeData
                }
            ]
        };

        var lels = [];
        for (var i = 0; i < maxDevNums + 1; i++) {
            lels.push([]);
        }
        $.ajax({
            type : "post",
            async : false,
            url : "/sc/comb/history/data",
            data : {},
            dataType : "json",
            success : function (result) {
                if (result) {
                    for (let i = 0; i < result.length; i++) {
                        lels[result[i].combDevId].push(result[i].combLel);
                    }
                    console.log(lels);
                }
                console.log("在ajax请求中获取数组长度:" + lels[1].length)
            },
            error : function(errorMsg) {
                alert("图表请求数据失败");
            }
        })

        console.log("在ajax请求外获取数组长度:" + lels[1].length);

        for (let i = 1; i < lels.length; i++) {
            var gaugeChart = echarts.init(document.getElementById("echarts-gauge-chart" + i));
            if (lels[i].length > 0) {
                var lel = lels[i][lels[i].length - 1];
                gaugeOption.series[0].data = [{value: lel, name: 'lel'}]
            } else {
                gaugeOption.series[0].data = [{value: 0, name: 'offline'}]
            }
            gaugeChart.setOption(gaugeOption);
            $(window).resize(gaugeChart.resize);
        }
    });
</script>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/152275.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FFmpeg 集成 x265 编译及解码

x265 是一个免费的软件库和应用程序&#xff0c;用于将视频流编码为 H.265/MPEG-H HEVC 压缩格式&#xff0c;并在 GNU GPL 条款下发布。 FFmpeg 为了支持 H.265 编、解码可以集成 x265 编译&#xff0c;在编译 FFmpeg 之前需要先编译 x265&#xff0c;但并不是所有的版本都能…

Python一轮知识拾遗

目录 字符串格式化 %格式符 format字符串格式化 三元条件运算符 可迭代对象 break和continue语句 enumerate函数 序列封包 序列解包 部分序列解包 append.列表和extend.列表的区别 字符串格式化 通过字符串的格式化&#xff0c;可以输出特定格式的字符串。 (1) 格式化…

为什么要申报绿色工厂?

一、什么是绿色工厂&#xff1f; 绿色工厂是指实现了用地集约化、生产洁净化、废物资源化、能源低碳化的工厂。 二、为什么要申报绿色工厂&#xff1f; 1、政策导向&#xff0c;发展趋势 发展绿色工厂是顺应全球绿色发展的大趋势&#xff0c;符合国家政策导向。 2、荣誉称号…

[笔记]Windows Cyswin ssh配置及远程控制

文章目录前言一、配置1.1 安装 Cygwin1.2 Cygwin安装时搜索安装ssh1.3 添加cygwin安装目录至Path环境变量1.4 配置 SSHD 服务1.5 添加 sshd连接账号二、使用2.1 使用配置的连接账号进行登录2.2 连接远程主机三、常见问题3.1 ssh on cygwin和openssh 冲突 提示 Host key verific…

新增血缘关系功能,色彩地图支持标记功能,DataEase开源数据可视化分析平台v1.18.0发布

2023年1月9日&#xff0c;DataEase开源数据可视化分析平台正式发布v1.18.0版本。 这一版本的功能升级包括&#xff1a;数据集方面&#xff0c;定时任务采用分页的方式拉取数据&#xff0c;减少资源消耗&#xff1b;仪表板方面&#xff0c;新增仪表板主题&#xff0c;以满足不同…

二叉平衡树之二叉树搜索树【咱们一起手动模拟实现】

目录 1、什么是二叉搜索树&#xff1f; 2、手动模拟二叉搜索树 2.1、整体代码 2.2、查找数据 2.3、插入数据 2.4、删除数据 3、性能分析 1、什么是二叉搜索树&#xff1f; 二叉搜索树也叫作二叉排序树&#xff0c;可以使一颗空树&#xff0c;也可以是具有以下性质的二…

JavaScript 高级 内存管理和闭包

这里写目录标题1. JavaScript内存管理2. 垃圾回收机制算法1. 引用计数算法2. 标记清除算法3. 闭包的概念理解4. 内存泄露5. 面试题1. JavaScript内存管理 不管什么样的编程语言&#xff0c;在代码的执行过程中都是需要给它分配内存的&#xff0c;不同的是某些编程语言需要我们…

基于融合C3SE+YOLOv5s的高精度二维码检测识别分析系统

在前面的系列博文中&#xff0c;我们尝试了在不同款的yolov5模型中加入不同的注意力机制来提升模型的性能&#xff0c;都有不错的表现效果&#xff0c;本文主要的目的是尝试将注意力机制融合集成进入原生的C3模块中来替换原生的C3模块来对比分析模型的检测性能&#xff0c;首先…

【精华】JVM调优学习

JVM 介绍 1. 什么是 JVM JVM 是 Java Virtual Machine&#xff08;Java 虚拟机&#xff09;的缩写。一台执行 Java 程序的机器。 2 .JAVA 语言的执行原理 计算机语言&#xff1a; 计算机能够直接执行的指令。这种指令和系统及硬件有关。 计算机高级语言&#xff1a; 在遵循…

模块化建筑全球市场分析

模块化市场分析 市场摘要 全球模块化建筑市场&#xff0c;预计从2019年的1199亿6千万美元&#xff0c;到2027年的1916亿2千万&#xff0c;以6.4%的年复合成长率成长。人口增加&#xff0c;快速城市化和基础设施发展投资增加是预测期内刺激市场增长的关键因素。模块化施工是最可…

【C进阶】第十三篇——指针详解

指针的基本概念 指针类型的参数和返回值 指针与数组 指针与const限定符 指针与结构体 指向指针的指针与指针数组 指向数组的指针与多维数组 函数类型和函数指针类型 不完全类型和复杂声明 指针的基本概念 堆栈有栈顶指针&#xff0c;队列有头指针和尾指针&#xff0c;…

C++ 图进阶系列之纵横对比 Bellman-Ford 和 Dijkstra 最短路径求解算法

1. 前言 因无向、无加权图的任意顶点之间的最短路径由顶点之间的边数决定&#xff0c;可以直接使用原始定义的广度优先搜索算法查找。 但是&#xff0c;无论是有向、还是无向&#xff0c;只要是加权图&#xff0c;最短路径长度的定义是&#xff1a;起点到终点之间所有路径中权…

第五十讲:神州路由器IPv6隧道的配置

目前IPv6隧道技术有ISATAP隧道、6to4隧道、IPv6 over MPL隧道等。 任务一&#xff1a;配置ISATAP隧道 实验拓扑图如下所示 配置要求&#xff1a;两台路由器ROUTERA和ROUTERB通过IPv4网络连接&#xff0c;要求在两台路由器上分别配置ISATAP隧道&#xff0c;实现两端IPv6主机PC…

回收租赁商城系统功能拆解05讲-供货商

回收租赁系统适用于物品回收、物品租赁、二手买卖交易等三大场景。 可以快速帮助企业搭建类似闲鱼回收/爱回收/爱租机/人人租等回收租赁商城。 回收租赁系统支持智能评估回收价格&#xff0c;后台调整最终回收价&#xff0c;用户同意回收后系统即刻放款&#xff0c;用户微信零…

2022年学习和实习总结——收获颇多(未完待续...)

0 序言 时间已经进入了2023年&#xff0c;今年将是属于我们这一届秋招的一年。回顾2022年的学习和实习历程&#xff0c;我觉得今年的收获还是不少的&#xff0c;甚至可以说是整个高等教育生涯中&#xff0c;收获最多的一年。 1 学习情况总结 1.1 读书和学习总结 原来…

【Linux】项目构建自动化工具——make和makefile

make 和 makefile1.背景2. 利用make和makefile简单编译一个源文件3.使用方法解释4.执行原理5.项目清理1.背景 &#xff08;1&#xff09;一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile定义了一系列的规则来指定&#xff…

智能驾驶视觉传感器测试:自动驾驶车辆如何进行传感器标定?

为什么要进行标定&#xff1f;一辆自动驾驶车辆会安装多个传感器&#xff0c;需要通过传感器标定来确定相互之间的坐标关系&#xff0c;从而将多个传感器数据整合为“一个传感器”。因此&#xff0c;准确的传感器标定是实现智能车辆多传感器感知和定位系统的先决条件。传感器标…

MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《6》

我们在看Faster R-CNN源码(MXNet版本)的时候&#xff0c;除了下面这些我们遇到的常见的参数解析 import argparse import ast parser argparse.ArgumentParser(descriptionDemonstrate a Faster R-CNN network,formatter_classargparse.ArgumentDefaultsHelpFormatter) parse…

【操作系统系统/Golang】实验5:磁盘调度(FCFS,SSTF,SCAN与循环SCAN)

1 实验问题描述设计程序模拟先来先服务FCFS&#xff0c;最短寻道时间优先SSTF&#xff0c;SCAN和循环SCAN算法&#xff08;对应其他参考书的LOOK和C-LOOK&#xff09;的工作过程。假设有trackNum个磁道号所组成的磁道访问序列&#xff0c;给定开始磁道号initTrackNum和磁头移动…

Java项目管理工具:Maven介绍

Maven 简介下载与环境配置Maven仓库仓库类型本地仓库配置简介 Maven ,一款跨平台的项目管理工具。它主要服务于基于 Java 平台的项目构建与依赖管理。即可以将项目的开发和管理过程抽象成一个项目对象模型(POM),开发人员只需要做一些简单的配置,Maven 便可自动完成项目构建…