为什么定义全局变量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

https://img.mukewang.com/climg/6274e217094a087704430115.jpg

else语句中计算应该减去30,不是20,修改如下:

https://img.mukewang.com/climg/6274e24409293f4d07170164.jpg

2、针对提问回复:

len变量可以定义为全局的,但是获取输入框内容要在oninput事件中,否则提前获取输入框内容永远为空,长度为0。参考:

https://img.mukewang.com/climg/6274e25509b9c13c07400234.jpg

祝学习愉快!

0

0 学习 · 17877 问题

查看课程