星空2020 2023-09-13 19:37 采纳率: 64.1%
浏览 12
已结题

layer弹窗中加载layui progress百分比进度条?

如下进度条不显示。
期望是在导出数据时,在layer.msg中显示导出数据的百分比进度条。



```html
layer.confirm('查询周期超过3天,系统将自动为您导出所需数据!', {icon: 7, title: '警告'}, function (index) {
  layer.msg('正在下载数据,请稍候...<br><div class="progress-container"><div id="progress" class="progress"></div></div>',{ icon: 16, shade: 0.1});
  
  var progressBar = document.getElementById("progress");
  var width = 0;
  var timer = setInterval(function() {
    width += 10;
    progressBar.style.width = width + '%';
    if (width >= 100) {
      clearInterval(timer);
    }
  }, 500);
  
  $.ajax({
    type: 'GET',
    data: {"status":status,"start":start,"end":end},
    url: './data.json',
    contentType: "application/json",
    success: function (res) {
      console.log(res.data)
      table.exportFile(myTable.config.id, res.data, 'csv',"明细");
    }
  });

  // 关闭弹窗
  layer.close(index);
});


```

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-09-13 22:34
    关注

    引用 皆我百晓生 小程序回复内容作答:

    您好,根据您提供的代码,我发现问题出在使用layer.msg弹窗中的HTML代码无法被正确解析和显示,进而导致进度条无法显示。这是因为layer.msg默认只接受纯文本信息,不支持解析HTML代码。

    要解决这个问题,我建议您使用layer.open方法,并设置type为1,这样可以打开一个带有自定义HTML内容的弹窗。您可以将进度条的代码放在这个自定义HTML中,然后通过JavaScript代码控制进度条的变化。

    以下是修改后的代码示例:

    layer.confirm('查询周期超过3天,系统将自动为您导出所需数据!', {icon: 7, title: '警告'}, function (index) {
      layer.open({
        type: 1,
        title: false,
        closeBtn: false,
        area: '300px',
        shade: 0.1,
        content: '正在下载数据,请稍候...<br><div class="progress-container"><div id="progress" class="progress"></div></div>'
      });
    
      var progressBar = document.getElementById("progress");
      var width = 0;
      var timer = setInterval(function() {
        width += 10;
        progressBar.style.width = width + '%';
        if (width >= 100) {
          clearInterval(timer);
        }
      }, 500);
    
      $.ajax({
        type: 'GET',
        data: {"status": status, "start": start, "end": end},
        url: './data.json',
        contentType: "application/json",
        success: function (res) {
          console.log(res.data)
          table.exportFile(myTable.config.id, res.data, 'csv', "明细");
        }
      });
    
      // 关闭弹窗
      layer.close(index);
    });
    

    这样,进度条应该可以正确地显示出来并随着时间递增。请注意,此示例使用了layer.open方法创建弹窗,通过设置titlecloseBtnfalse来隐藏标题栏和关闭按钮,设置area为'300px'来定义弹窗宽度。您可以根据需要调整这些参数。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月11日
  • 创建了问题 9月13日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题