找回密码
 立即注册

QQ登录

只需一步,快速开始

hubei333

高级会员

33

主题

312

帖子

1747

积分

高级会员

积分
1747

[已处理] 两个JS合并

hubei333
高级会员   /  发表于:2021-8-23 09:45  /   查看:3107  /  回复:10
10金币
同一个页面,同一个表格内需要运行两个JS,但是页面只能加载一个JS,求把两个功能的JS合并成一个。
本人小白一枚,求大神帮忙!
  1. 第一个JS:
  2. // JavaScript source code
  3. Forguncy.Page.ready(function () {

  4.     var priceColIndex = 14;
  5.     var countColIndex = 18;
  6.     var isSettingValue = false;
  7.     var listview = Forguncy.Page.getListView("表格1");
  8.     var updateCount = function (row) {
  9.         var price = listview.getValue(row, priceColIndex);
  10.         if (price == "特") {
  11.          var count = 0.1
  12.         }
  13.         if (price == "超") {
  14.          var count = 0.05
  15.         }

  16.         isSettingValue = true;
  17.         listview.setValue(row, countColIndex, count);
  18.         isSettingValue = false;
  19.         return true;
  20.     }

  21.     var updatePrice = function (row) {
  22.         var count = listview.getValue(row, countColIndex);
  23.         if (count <= 0.05) {
  24.          var price = "超"
  25.         }
  26.         if (count > 0.05) {
  27.          var price = "特"
  28.         }

  29.         isSettingValue = true;
  30.         listview.setValue(row, priceColIndex, price);
  31.         isSettingValue = false;
  32.         return true;
  33.     }


  34.     listview.bind(Forguncy.ListViewEvents.ValueChanged, function (arg1, arg2) {
  35.         if (isSettingValue) {
  36.             return;
  37.         }

  38.         var row = arg2.CellRanges[0].Row;
  39.         var col = arg2.CellRanges[0].Column;
  40.         if (row >= 0 && col >= 0) {
  41.             if (col === priceColIndex) {
  42.                     updateCount(row);
  43.             }
  44.             
  45.             else if (col === countColIndex) {
  46.                      updatePrice(row);
  47.                
  48.             }
  49.             
  50.         }
  51.     });
  52. });


  53. 第二个JS:
  54. var comboboxColIndex = 0;
  55. var columnName = "3e26be062af82f5cb9b45193efe839d1";
  56. var columnWidth = 350;
  57. var spread = Forguncy.Page.getListView("表格1").getControl();
  58. var sheet = spread.getActiveSheet();
  59. sheet.bind(GC.Spread.Sheets.Events.EditorStatusChanged, function (eventType, args) {
  60.     var col = sheet.getActiveColumnIndex();
  61.     if (col === comboboxColIndex) {
  62.         var row = sheet.getActiveRowIndex();
  63.         var combobox = sheet.getCellType(row, col).getGcCombobox();
  64.         combobox.getDropDownList().updateColumnWidth(columnName, columnWidth);
  65.     }
  66. });

复制代码

最佳答案

查看完整内容

这个有点复杂,需要看是否在同一个页面,函数是否共用同一个引用对象,各个参数是否有冲突,需要注意的地方还挺多的。 我看这两个js都是对表格进行处理,一个是功能类的,一个是外形类的? 建议看看能不能通过设计器处理吧,你写这么多js,难保互相之间不会冲突的。 js代码不是简单的1+1的关系,几乎所有的变量、函数、参数都需要重新定义,比如取哪个单元格、取哪个表格、长宽异常怎么处理、表格查询条件为空怎么处理等。 ...

10 个回复

倒序浏览
最佳答案
最佳答案
孤狼悬赏达人认证 活字格认证
高级会员   /  发表于:2021-8-23 09:45:20
来自 2#
这个有点复杂,需要看是否在同一个页面,函数是否共用同一个引用对象,各个参数是否有冲突,需要注意的地方还挺多的。

我看这两个js都是对表格进行处理,一个是功能类的,一个是外形类的?
建议看看能不能通过设计器处理吧,你写这么多js,难保互相之间不会冲突的。

js代码不是简单的1+1的关系,几乎所有的变量、函数、参数都需要重新定义,比如取哪个单元格、取哪个表格、长宽异常怎么处理、表格查询条件为空怎么处理等。
需要在页面上不停地调试,需要结合你的工程文件才能判断是否能正常运行。
只给一个js文件,是几乎没法写出完善的代码的哟。

如果感觉有点帮助,就选我为最佳答案吧,有问题也可以追问哈
回复 使用道具 举报
hubei333
高级会员   /  发表于:2021-8-23 15:19:29
3#
孤狼 发表于 2021-8-23 14:15
这个有点复杂,需要看是否在同一个页面,函数是否共用同一个引用对象,各个参数是否有冲突,需要注意的地方 ...

同页面同表格,一个表格内下拉列宽度调整,一个是表格内列互算,都是论坛里大神门写的JS,我是照搬,现在是同页面同表格内同时需要这两个JS,需要大神们看看怎么合并成一个。
回复 使用道具 举报
lovert
银牌会员   /  发表于:2021-8-23 16:12:02
4#
光给出代码,你还得把你的逻辑说清楚,最好是图片说明白
回复 使用道具 举报
zyk.Zhou活字格认证
银牌会员   /  发表于:2021-8-23 16:25:36
5#
本帖最后由 zyk.Zhou 于 2021-8-23 16:28 编辑

你把两个js代码直接放进一个js里面,运行试一试。
  1. Forguncy.Page.ready(function () {

  2.     var priceColIndex = 14;
  3.     var countColIndex = 18;
  4.     var isSettingValue = false;
  5.     var listview = Forguncy.Page.getListView("表格1");
  6.     var updateCount = function (row) {
  7.         var price = listview.getValue(row, priceColIndex);
  8.         if (price == "特") {
  9.          var count = 0.1
  10.         }
  11.         if (price == "超") {
  12.          var count = 0.05
  13.         }

  14.         isSettingValue = true;
  15.         listview.setValue(row, countColIndex, count);
  16.         isSettingValue = false;
  17.         return true;
  18.     }

  19.     var updatePrice = function (row) {
  20.         var count = listview.getValue(row, countColIndex);
  21.         if (count <= 0.05) {
  22.          var price = "超"
  23.         }
  24.         if (count > 0.05) {
  25.          var price = "特"
  26.         }

  27.         isSettingValue = true;
  28.         listview.setValue(row, priceColIndex, price);
  29.         isSettingValue = false;
  30.         return true;
  31.     }


  32.     listview.bind(Forguncy.ListViewEvents.ValueChanged, function (arg1, arg2) {
  33.         if (isSettingValue) {
  34.             return;
  35.         }

  36.         var row = arg2.CellRanges[0].Row;
  37.         var col = arg2.CellRanges[0].Column;
  38.         if (row >= 0 && col >= 0) {
  39.             if (col === priceColIndex) {
  40.                     updateCount(row);
  41.             }
  42.             
  43.             else if (col === countColIndex) {
  44.                      updatePrice(row);
  45.                
  46.             }
  47.             
  48.         }
  49.     });
  50. });


  51. var comboboxColIndex = 0;
  52. var columnName = "3e26be062af82f5cb9b45193efe839d1";
  53. var columnWidth = 350;
  54. var spread = Forguncy.Page.getListView("表格1").getControl();
  55. var sheet = spread.getActiveSheet();
  56. sheet.bind(GC.Spread.Sheets.Events.EditorStatusChanged, function (eventType, args) {
  57.     var col = sheet.getActiveColumnIndex();
  58.     if (col === comboboxColIndex) {
  59.         var row = sheet.getActiveRowIndex();
  60.         var combobox = sheet.getCellType(row, col).getGcCombobox();
  61.         combobox.getDropDownList().updateColumnWidth(columnName, columnWidth);
  62.     }
  63. });

复制代码
根据报错或者哪一个代码没有起作用,一步步调试

回复 使用道具 举报
hubei333
高级会员   /  发表于:2021-8-23 16:28:44
6#
lovert 发表于 2021-8-23 16:12
光给出代码,你还得把你的逻辑说清楚,最好是图片说明白

在表格里有两个特殊的地方:一、条码列里是组合框,这个组合框的下拉框需要JS修改默认宽度;二、特价原因和扣点两列这里,是需要列互算JS。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
lovert
银牌会员   /  发表于:2021-8-23 16:42:40
7#
本帖最后由 lovert 于 2021-8-23 16:45 编辑

页面可以加载很多的JS




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
hubei333
高级会员   /  发表于:2021-8-23 17:13:40
8#
lovert 发表于 2021-8-23 16:42
页面可以加载很多的JS

有冲突,
回复 使用道具 举报
lovert
银牌会员   /  发表于:2021-8-23 17:26:05
9#
特价原因和折扣为什么不用公式,非要用js,单纯看你的两个js代码,里面没有冲突的变量,可能是其他的原因
回复 使用道具 举报
hubei333
高级会员   /  发表于:2021-8-23 17:50:17
10#
lovert 发表于 2021-8-23 17:26
特价原因和折扣为什么不用公式,非要用js,单纯看你的两个js代码,里面没有冲突的变量,可能是其他的原因

用公式没法“互算”,两个JS单独在一个表格内都没问题,现在是同一个页面同一个表中需要这两个JS的时候就 不行了,不懂JS,搞不懂是什么原因。等下一个版本吧,看新功能预告,下一个版本应该就能解决表内列互算的问题,这样就少了一个JS。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部