✅ 推荐实现方案
首先,对HTML结构做减法。不要堆叠多个空 标签,只保留一个带 id="privacylink" 的锚点即可,其 href 默认指向通用版本(例如UK):
Your personal information will be processed in accordance with our Privacy Policy.
结构精简后,JavaScript的逻辑也自然变得清晰简洁。监听 select 的 change 事件,获取选中的国家代码,然后用模板字符串拼接出完整的URL:document.addEventListener('DOMContentLoaded', function() {
const countrySelect = document.forms.form01.countrySelect;
const privacyLink = document.getElementById('privacylink');
countrySelect.addEventListener('change', function(e) {
const countryCode = e.target.value; // 如 'au', 'sg'
privacyLink.href = `https://www.example.com/${countryCode}/disclaimer-policies/privacy/`;
});
});
这段代码看起来非常直观。这里有几个关键改进点值得注意:
- 使用 `document.forms.form01.countrySelect` 精准定位 select 元素,比 `getElementById('tfa_27')` 更具语义化,也能避免ID冲突;
- 给 标签加上唯一的 id="privacylink",彻底告别脆弱的选择器——例如 `querySelector(...href*="...")` 这种不可靠的写法;
- option 的 value 属性直接使用标准国家代码(uk/au/sg),而非内部字段ID(如 tfa_35)或全称(如 New Zealand),逻辑健壮性大幅提升,后续维护也更省心;
- 用模板字符串动态生成URL,清晰直观,完全无需额外维护映射对象。
