为什么定义全局变量len,就不出效果呢
来源:4-10 编程练习
WYW265672
2022-05-06 16:49:10
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <p>字数限制在30字内,<span>您还可以输入<b>30</b> 字</span></p> <textarea cols="50" rows="7" id="text"></textarea> <script type="text/javascript"> //补充代码 var oB = document.getElementsByTagName('b')[0]; var oSpan = document.getElementsByTagName('span')[0]; var oText = document.getElementById('text'); oText.oninput = function () { // len如果定义在函数外面,len就一直是0 var len = oText.value.length; console.log(len); if (len <= 30) { oSpan.innerHTML = '您还可以输入<b>' + (30 - len) + '</b>字'; } else { oSpan.innerHTML = '您已超出<b>' + (len - 20) + '</b>字'; } }; </script> </body> </html>
老师请详细讲一下,不明白
1回答
好帮手慕星星
2022-05-06
同学你好,解答如下:
1、测试代码,输入内容超出的时候多了10
else语句中计算应该减去30,不是20,修改如下:
2、针对提问回复:
len变量可以定义为全局的,但是获取输入框内容要在oninput事件中,否则提前获取输入框内容永远为空,长度为0。参考:
祝学习愉快!
相似问题