You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过链接传递函数返回值?需在另一函数中获取total值

嘿,我来帮你理清楚这两个问题的解决方案,其实你的代码已经迈出正确的一步啦!

1. 在另一个函数中获取total的值

你写的call函数里,已经通过var a = recalculateTotal(sc);正确拿到了recalculateTotal返回的total值,这个逻辑完全没问题~

不过要注意一个前提:确保你传递的sc参数是有效的jQuery对象,因为recalculateTotal里用了sc.find('selected')方法。比如你需要先定义sc为页面中包含座位的容器,比如:

var sc = $('#seat-container'); // 假设你的座位容器id是seat-container

如果sc不是正确的DOM集合,find('selected')就找不到选中的座位元素,最终total会一直是0。

2. 通过链接传递函数返回的值

你用window.location.replace把total值拼到URL参数里的思路是对的,这里可以补充两个优化点,让代码更健壮:

(1)对参数值进行URL编码

虽然数字本身不会有URL解析问题,但如果未来total包含特殊字符(比如金额里的逗号,或者其他场景的特殊字符),直接拼接会导致URL失效。建议用encodeURIComponent对参数值编码:

function call() { 
  var a = recalculateTotal(sc); 
  window.location.replace("Demo2.jsp?name=" + encodeURIComponent(a)); 
}

(2)在目标页面接收参数

如果是后端页面(比如Demo2.jsp是Java页面),可以用后端代码获取参数:

String totalStr = request.getParameter("name");
double total = Double.parseDouble(totalStr);

如果是前端在Demo2.jsp中读取这个参数,可以用URLSearchParams API:

// 在Demo2.jsp的前端脚本中
const urlParams = new URLSearchParams(window.location.search);
const totalValue = urlParams.get('name');
// 转成数字类型使用
const total = parseFloat(totalValue);

补充检查点

  • 确认recalculateTotal里的价格获取逻辑正确:如果你的座位元素是用jQuery的data()方法存储价格,要注意this是原生DOM节点,没有data()方法,需要改成$(this).data('price');另外如果selected是CSS类名,find('selected')要改成find('.selected')(不然会查找<selected>标签,这大概率不是你想要的)。修正后的recalculateTotal:
function recalculateTotal(sc) { 
  var total = 0; 
  sc.find('.selected').each(function() {
    total += $(this).data('price'); 
  }); 
  return total; 
}

内容的提问来源于stack exchange,提问作者John Dee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:49:00