javascript表单验证和函数的一个问题,不知道这么写是对的嘛

问:表单验证,一行文本不能输入超过三十个字,如果超过三十个字就只取前三十个字
下面这两种方法正确吗?

img

img

两个图片好像贴的是同一个代码,可以把数组的定义放到if-else语句的前面,然后把getElementBy改为getElementById应该就可以了。

测试代码如下:

参考链接:
https://www.cnblogs.com/miaosen/p/10912830.html


HTML注释_百度百科 不被程序执行的代码。用于程序员标记代码,在后期的修改,以及他人的学习时有所帮助 https://baike.baidu.com/item/HTML%E6%B3%A8%E9%87%8A/5015186

<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        
        <script type="text/javascript">
            function a(){
                var n= document.getElementById('textarea').value;
                
                // https://www.cnblogs.com/miaosen/p/10912830.html
                // 创建一个长度为30的数组
                var ch = new Array(30); 
                if(n.length<=30){
                    alert(n);
                
                }else{
                
                    for(var i=0;i<30;i++){
                        ch[i] = n.charAt(i);  // 将n当前位置的值存入数组
                        
                    }
                    alert(ch);  // 打印数组内容
                }    
                
                
            }
            
            
        </script>
        
    </head>

    <body>
        <form>
            <!-- 
             https://cloud.tencent.com/developer/beta/article/2174648
             https://baike.baidu.com/item/HTML%E6%B3%A8%E9%87%8A/5015186
               使用失去焦点事件,触发函数a()来显示文本框前30个字符
            -->
            <input type="value" name="text" id="textarea"  onblur="a()"/>
                
        </form>
    </body>

</html>

img

else里面不对 ,直接alert(n.substr(0,30));

else里面 for循环里 var 的char数组应该放到外面 每次赋值给这个数组 char[i]=n.charat(i)