yhdata_pZmqtL8D玄铁二
2025-2-25 09:44:28 发布在问答
【常用脚本】 脚本debug的值与显示的值不一致
// 获取下拉参数组件的勾选数据
var selectedData = 统计月.getSelectedObjects();

// 定义一个函数,用于将日期字符串减去一个月
function subtractOneMonth(dateStr) {
    try {
        // 将日期字符串解析为 Date 对象
        var dateParts = dateStr.split("-").map(Number); // 将 "YYYY-MM" 分割为 [YYYY, MM]
        var date = new Date(dateParts[0], dateParts[1] - 1); // 注意:月份从 0 开始

        // 减去一个月
        date.setMonth(date.getMonth() - 1);

        // 获取新的年份和月份
        var year = date.getFullYear();
        var month = date.getMonth() + 1; // 月份从 0 开始,需要加 1

        // 格式化为 YYYY-MM
        return year + "-" + (month < 10 ? "0" + month : month);
    } catch (e) {
        console.error("日期解析错误:", dateStr, e);
        return null; // 如果解析失败,返回 null
    }
}

// 对每个勾选的数据减去一个月
var modifiedData = selectedData.map(function(item) {
    var result = subtractOneMonth(item);
    if (result === null) {
        console.error("无效的日期数据:", item);
    }
    return result;
}).filter(function(item) { // 过滤掉无效的 null 值
    return item !== null;
});

// 将处理后的数据设置到文本参数组件中
if (modifiedData.length > 0) {
    统计月2.value = modifiedData.join(", "); // 将数组转换为逗号分隔的字符串
} else {
    统计月2.value = "无有效数据"; // 如果没有有效数据,显示提示信息
}


var values = param["统计月2"];
if (values instanceof Array) {
    for (var i = 0; i < values.length; i++) {
        debug("值:" + values);
    }
} else {
    debug("值:" + values);
}
一个下拉参数组件和一个文本组件,下拉参数组件数据是2025-01、2025-02这种月份选择,当我拉下参数组件选择2025-01、2025-02时,文本组件则显示2024-12、2025-01,当我拉下参数组件选择2025-01时,文本组件则显示2024-12,就是比下拉参数组件少一个月的选择,询问ai得出的脚本如上,刚打开时debug的结果没有问题,但单选月份后,界面还没加载完成,debug的弹窗就出来了,debug的结果没有发生变化,这个需要怎么修改才能让文本参数组件显示的值与弹窗的值一致?



1.jpg
2.jpg
244
20
精彩评论20
yhdata_lyaa
发表于 2025-2-25 10:01:48 显示全部楼层
当我拉下参数组件选择2025-01、2025-02时,文本组件则显示2024-12、2025-01,文本组件的值是怎么来的
回复

使用道具 2#

yhdata_pZmqtL8D玄铁二 回复yhdata_lyaa
发表于 2025-02-25 10:09:40
由脚本获取下拉参数组件设置的
回复

yhdata_lyaa
发表于 2025-2-25 10:21:41 显示全部楼层
你是咋做的,这样可以吗

回复

使用道具 3#

yhdata_pZmqtL8D玄铁二 回复yhdata_lyaa
发表于 2025-02-25 10:23:57
下拉参数选择了2025-01,那我文本参数就应该是2024-12,文本参数要比下拉参数选择的月份少一个月
回复

yhdata_pZmqtL8D玄铁二 回复yhdata_lyaa
发表于 2025-02-25 10:27:08
我用的组件是下拉参数组件和文本参数组件,这个您可以把上面的脚本复制运行一下
回复

yhdata_lyaa
发表于 2025-2-25 10:52:20 显示全部楼层

文本参数要比下拉参数选择的月份少一个月,没问题的,debug没有值

回复

使用道具 4#

yhdata_pZmqtL8D玄铁二 回复yhdata_lyaa
发表于 2025-02-25 10:57:27
我的脚本是放在变化时运行里的
回复

yhdata_lyaa回复yhdata_pZmqtL8D玄铁二
发表于 2025-02-25 12:25:52
还是空
回复

yhdata_lyaa
发表于 2025-2-25 12:26:11 显示全部楼层
试试这样呢
回复

使用道具 5#

yhdata_pZmqtL8D玄铁二 回复yhdata_lyaa
发表于 2025-02-25 13:03:48
要是下拉参数多选呢?这个会怎么显示?
回复

yhdata_pZmqtL8D玄铁二 回复yhdata_lyaa
发表于 2025-02-25 13:42:40
这样设置下拉参数多选的时候会由报错
回复

yhdata_lyaa回复yhdata_pZmqtL8D玄铁二
发表于 2025-02-25 13:44:16
多选?可是文本参数只有一个
回复

展开更多回复
yhdata_lyaa
发表于 2025-2-25 16:09:22 显示全部楼层
你现在怎么写的呢,发出来看看,报错索引大于字符串的长度
我这样不会报错,如果是下拉列表参数组件,你要取第几个值到文本参数组件呢
回复

使用道具 6#

yhdata_pZmqtL8D玄铁二 回复yhdata_lyaa
发表于 2025-02-25 16:12:21
就是按你上面那个代码操作的没有要[0],要取2024-02到2025-02的范围的值
回复

yhdata_lyaa回复yhdata_pZmqtL8D玄铁二
发表于 2025-02-25 16:29:02
要范围的值做什么,需求不是给文本参数赋一个值吗{:4_91:}
回复

YDD青铜二
发表于 2025-2-25 17:04:27 显示全部楼层
//获取年月的选择值
    var grid_ny=ny.getSelectedObjects();
    var arr=[];
    for(i=0;i<grid_ny.length;i++){
        arr[i]=formatDate(dateAdd(parseDate(grid_ny[i]+'-01','yyyy-MM-dd'),'month',-1),'yyyy-MM');
    }
    wb.data=arr.join('、');
    debug(wb.data)






微信图片_20250225170310.png


回复

使用道具 7#

yhdata_lyaa回复YDD青铜二
发表于 2025-02-25 18:11:17
赞,到文本组件是这样的,不知道楼主想要什么
回复

高级模式
您需要登录后才可以回帖 登录 | 免费注册

  • 官方微信

    欢迎关注永洪服务号!收费为0,价值无限

    扫码关注
  • 新浪微博

    让每位用户轻松挖掘数据价值!

    访问新浪微博
  • 智能客服
100W

用户等你来哦

Copyright   ©2012-2025  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |《永洪社区协议》
返回顶部