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

JSON值替换报错:将United States of America替换为USA失败

问题分析与修复方案

报错根源

你的代码修改后出现错误,主要是三个问题:

  1. 字符串拼接语法错误:'input[name=" +key+ "]' 引号闭合不正确,导致jQuery选择器无效
  2. 未定义变量引用:t.name 中的t未声明,直接调用会抛出「Cannot read property 'name' of undefined」错误
  3. 逻辑顺序混乱:先执行o += t.name拼接值,再做替换,导致最终结果不符合预期

修复后的代码方案

方案一:简洁的条件判断(适合少量国家替换)

"countries" == e && (
  // 基于原JSON获取的o值做替换
  let countryValue = o;
  if (countryValue === "United States of America") {
    countryValue = "USA";
  } else if (countryValue === "United Kingdom") {
    countryValue = "UK";
  }
  // 修复字符串拼接错误,正确赋值到输入框
  $('input[name="' + key + '"]').val(countryValue),
  $('#countries input').val(countryValue),
  $("#new-tag-" + Xcountry).val(countryValue)
),

方案二:对象映射(适合后续扩展更多国家)

如果之后需要添加更多国家缩写,用对象映射更易维护:

"countries" == e && (
  // 定义国家全称与缩写的映射表
  const countryMap = {
    "United States of America": "USA",
    "United Kingdom": "UK"
  };
  // 优先取映射值,无匹配则保留原内容
  let countryValue = countryMap[o] || o;
  // 正确赋值到输入框
  $('input[name="' + key + '"]').val(countryValue),
  $('#countries input').val(countryValue),
  $("#new-tag-" + Xcountry).val(countryValue)
),

关键修复点说明

  • 修正了输入框选择器的字符串拼接错误,确保jQuery能正确找到目标元素
  • 移除了无意义的o += t.name操作,直接基于原JSON返回的o值处理替换
  • 用清晰的逻辑替代混乱的三元运算符,避免逻辑分支错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:42:17