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

JavaScript基于Cookie值的条件判断仅最后一个if语句执行异常

问题根因

你的代码存在两个核心语法/逻辑错误,导致所有if判断永远成立、按顺序全部执行:

  • 混淆了赋值运算符=和相等比较运算符===/==:你在每个if的条件括号里写的是变量名 = "true",这不是判断变量值是否等于"true",而是直接把字符串"true"赋值给对应变量。赋值表达式本身的返回值就是被赋的"true",属于JavaScript里的真值,因此每一个if块都会从上到下依次执行,最后执行的就是滚动到#tv的逻辑,所以页面最终总会停在最后一个区块。
  • 现有代码完全没有读取你提前存储的Cookie值,所有变量初始手动赋值为null之后,又在if条件里被强行覆盖为"true",和你实际存在浏览器里的Cookie值没有任何关联,自然不会按照Cookie的实际值触发对应逻辑。
修复方案
  1. 先封装简单的Cookie读取方法,拿到你实际存储的目标Cookie值
  2. 把所有if条件里的赋值符号=替换为严格相等比较符===,判断Cookie值是否匹配
  3. 由于你同一时间只有一个有效Cookie,匹配到对应值执行滚动后可以直接终止后续判断,避免多余执行

修复后的完整JS代码如下:

jQuery(document).ready(function ($) {
  // 封装原生Cookie读取方法
  function getCookie(name) {
    const value = `; ${document.cookie}`;
    const parts = value.split(`; ${name}=`);
    if (parts.length === 2) return parts.pop().split(';').shift();
    return null;
  }

  // 读取实际存储的Cookie值,不要手动写死变量值
  const csomagcookie = getCookie('csomagcookie');
  const triocsomagcookie = getCookie('triocsomagcookie');
  const internetcsomagcookie = getCookie('internetcsomagcookie');
  const tvcsomagcookie = getCookie('tvcsomagcookie');

  // 用===做值比较,禁止在判断条件里写赋值操作
  if (csomagcookie === "true") {
    document.getElementById("csomag").scrollIntoView();
    return;
  }
  if (triocsomagcookie === "true") {
    document.getElementById("trio").scrollIntoView();
    return;
  }
  if (internetcsomagcookie === "true") {
    document.getElementById("internet").scrollIntoView();
    return;
  }
  if (tvcsomagcookie === "true") {
    document.getElementById("tv").scrollIntoView();
    return;
  }
});

原有CSS和HTML代码不需要修改,替换上述JS逻辑后即可按照实际存储的Cookie值滚动到对应区块,不会再出现强制跳转到最后一个区块的问题。

注:如果你存储Cookie时用的布尔值不是字符串格式的"true",根据实际存储的格式调整比较的目标值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 00:12:16