老师 请问我输入第一个字的时候为什么30没有变化呢,从第二个才开始变化

来源:4-5 编程练习

qq_慕标2503495

2020-04-03 18:20:56

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>字数变化</title>
</head>
<body>
<p>字数限制在30字内,<span>您还可以输入<b>30</b> 字</span></p>
<textarea cols="50"  rows="7"  id="text"></textarea>
<script type="text/javascript">
//补充代码
var a=document.getElementById('text');
var c=document.getElementsByTagName('b')[0];
var d=document.getElementsByTagName('span')[0];
var total=30;
a.onkeydown=function(){
var len=a.value.length;
var b=total-len;
c.innerHTML=b;
if(c.innerHTML<0){
var h=len-total;
                   d.innerHTML="您已经超出"+h+"个字";
}


}

</script>
</body>
</html>


写回答

1回答

好帮手慕糖

2020-04-03

同学你好,关于同学的问题,以及其他需要优化的问题如下:

1、因为onkeydown为键盘按下事件,当输入第一个字时,按下键盘,但是这时文本框中还没有文字,所以数字不更新,当第二次按下的时候,进行计算,这时文本框中正好,有第一次输入的数字,减去一是可以的。但是建议这里使用鼠标抬起事件onkeyup,例:

http://img.mukewang.com/climg/5e871f180908c2f503470084.jpg

2、超出之后,再删除的话,提示回不到还可以输入的提示。如下:

这是因为改变了结构,改变了html的结构,超出之后,就没有b这个元素,不能直接赋值,建议:输入的也可以对span赋值,且判断,直接判断b是否小于0。例:

http://img.mukewang.com/climg/5e871fa109d0287905180281.jpg

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

0

0 学习 · 40143 问题

查看课程