为什么第二次点击按钮时,JS代码未将DOM元素内容切换为msgTwo变量的值?
错误原因
你的判断条件存在逻辑错误:你直接将DOM元素对象el和字符串变量msg做等值判断,二者属于完全不同的数据类型,判断结果永远为真,因此else分支永远不会被触发。
同时HTML中的#message元素原始文本自带前后换行和空格,直接比对会出现匹配失败的问题,需要先去除空白字符。
修正后代码
只需修改JS部分的判断逻辑即可,HTML无需改动:
let el = document.getElementById('message'); let butt = document.getElementById('clicktodo') let msg = 'Sign up to our Newsletter for 10% off!'; let msgTwo = 'Welcome to Our Site!'; function change() { // 比对元素的文本内容,trim()用于去除前后空白字符 if (el.textContent.trim() !== msg) { el.textContent = msg; } else { el.textContent = msgTwo; } }; butt.addEventListener('click', change);
内容的提问来源于stack exchange,提问作者The Equine Gate Keeper
相关产品推荐
相关产品推荐

