JSON值替换报错:将United States of America替换为USA失败
问题分析与修复方案
报错根源
你的代码修改后出现错误,主要是三个问题:
- 字符串拼接语法错误:
'input[name=" +key+ "]'引号闭合不正确,导致jQuery选择器无效 - 未定义变量引用:
t.name中的t未声明,直接调用会抛出「Cannot read property 'name' of undefined」错误 - 逻辑顺序混乱:先执行
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
相关产品推荐
相关产品推荐

