老师 请问我输入第一个字的时候为什么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,例:

2、超出之后,再删除的话,提示回不到还可以输入的提示。如下:
这是因为改变了结构,改变了html的结构,超出之后,就没有b这个元素,不能直接赋值,建议:输入的也可以对span赋值,且判断,直接判断b是否小于0。例:

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