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

页面间传递变量后条件判断函数失效问题排查

问题:点击按钮传递变量到另一页面后,条件比较函数无法正常工作

我看了你的代码,问题出在第二页的参数解析逻辑上——你定义了解析URL参数的qs()函数,但从来没有调用它,而且somval变量也没被赋值,所以它一直是undefined,这就是控制台报错的原因。

具体问题拆解:

  • 第二页中,你只声明了var somval;但没有给它赋值,所以初始值是undefined
  • qs()函数负责提取URL里的查询参数,但你没有执行这个函数,导致qsParm数组是空的,根本拿不到URL里的somval参数值
  • 最后调用compare()时,somval是undefined,自然不会触发任何if/else分支

修复后的第二页代码:

<script>
var somval;
var qsParm = new Array();

function qs() {
  var query = window.location.search.substring(1);
  var parms = query.split('&');
  for (var i=0; i < parms.length; i++) {
    var pos = parms[i].indexOf('=');
    if (pos > 0) {
      var key = parms[i].substring(0, pos);
      var val = parms[i].substring(pos + 1);
      qsParm[key] = val;
    }
  }
}

// 1. 先调用qs()解析URL参数,把参数存入qsParm
qs();
// 2. 给somval赋值,从qsParm中取出对应的参数值
somval = qsParm['somval'];

function compare(){
  // URL参数解析出来是字符串类型,用严格相等===更安全,避免隐式类型转换问题
  if(somval === '1'){
    alert(1);
    $("#radio_1").prop("checked", true);
  }else if(somval === '2'){
    alert(2);
    $("#radio_2").prop("checked", true);
  }else{
    alert('未匹配到有效参数');
  };
}

compare();
</script>

额外优化小建议:

  • 第一页的pass函数可以简化,不用额外声明somval变量,直接写window.location = 'contact/index.php?somval=' + x;就行
  • 可以给somval加个默认值,比如somval = qsParm['somval'] || '0';,防止参数不存在时的异常

内容的提问来源于stack exchange,提问作者Fernando Souza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:01:31