JavaScript实现文本框输入值转换显示的条件判断问题求助
JavaScript实现文本框输入值转换显示的条件判断问题求助
嘿,刚入门JavaScript遇到这种小问题太正常啦,我帮你捋捋代码里的问题,然后给你修正后的版本~
先说说你现有代码里的几个关键问题:
- 条件判断用错了运算符:你写的
if (label = "BE20R")用的是赋值运算符=,这会直接把"BE20R"赋值给label变量,导致这个条件永远为真,不管输入什么都会显示"5layer"。应该用相等运算符,推荐用严格相等===(同时检查值和类型)。 - 没有获取文本框的实际输入值:你定义了
txtName来获取文本框元素,但没读取它的value属性,判断的时候根本没用到用户输入的内容。 - 变量名混乱+结果文本不符需求:你判断里用了未定义的
label变量(应该用txtName.value),而且需求里是显示"5layers"和"3layers",你代码里写的是"5layer"和"3layer"少了个s。
下面是修正后的完整代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Input Value Converter</title> </head> <body> <input type="text" id="Username" placeholder="输入内容试试"/> <input type="button" id="tutorial" value="Click" onclick="repeatvalue()" /> <hr /> <label id="label"></label> <script> function repeatvalue() { // 获取文本框元素和显示标签元素 const txtName = document.getElementById("Username"); const lblName = document.getElementById("label"); // 获取用户输入的值,trim()可以去掉前后空格,避免误判 const inputValue = txtName.value.trim(); // 用严格相等判断输入值 if (inputValue === "BE20R") { lblName.innerHTML = '5layers'; } else { lblName.innerHTML = '3layers'; } } </script> </body> </html>
再给你几个小建议:
- 如果需要忽略输入的大小写(比如输入"be20r"也能触发5layers),可以把判断改成
inputValue.toLowerCase() === "be20r" - 相比用
onclick内联事件绑定,更推荐用addEventListener来绑定点击事件,代码分离更清晰,比如把脚本改成这样:
// 获取按钮元素 const btn = document.getElementById("tutorial"); // 绑定点击事件 btn.addEventListener('click', function() { const txtName = document.getElementById("Username"); const lblName = document.getElementById("label"); const inputValue = txtName.value.trim(); if (inputValue === "BE20R") { lblName.innerHTML = '5layers'; } else { lblName.innerHTML = '3layers'; } });
这样就可以把HTML里的onclick="repeatvalue()"删掉啦~
备注:内容来源于stack exchange,提问作者Giedrius Šadbaras
相关产品推荐
相关产品推荐

