JavaScript正则验证邮箱以及JS语句写在不同位置的区别
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form action=""> <p> 用户名:<input type="text" name="username" /> </p> <p> Email:<input type="text" name="email" /> </p> <p> <input type="submit" value="submit" /> </p> </form> </body> <script type="text/javascript"> document.getElementsByTagName('form')[0].onsubmit = function(){ var patt = /^[a-zA-Z0-9]{6,11}$/; //用户名为6-11位字母及数字 if(!patt.test(document.getElementsByName('username')[0].value)){ alert('warning'); return false; } patt = /^\w+@\w+(\.\w+)+$/ //输入正确的email地址 if(!patt.test(document.getElementsByName('email')[0].value)){ alert('error'); return false; } } </script> </html>
运行过程中遇到一个问题:若JS代码写在<head></head>中,则不能实现验证效果。
通常我们插入JS代码会有以下几种情况:
(1)javascript代码写在<head>里面:
由于这时候网页主体(body)还未加载,所以这里适合放一些不是立即执行的自定义函数,立即执行的语句则很可能会出错(视浏览器而定)。有时候并不需要一载入HTML就运行Javascript,而是用户点击了HTML中的某个对象,触发了一个事件,才需要调用Javascript。这时候,通常将这样的Javascript放在HTML的<head></head>里。
定义为函数并用于页面事件的JavaScript应当放在head标记中,因为它会在body之前加载。采用这种方法,页面就不会被脚本搞得一团糟,易于阅读,在每个页面中,总可以在同一个位置找到脚本。
(2)javascript代码写在<body>里面:
这里可以放函数也可以放立即执行的语句,但是如果需要和网页元素互动的(比如获取某个标签的值或者给某个标签赋值),Javascript代码务必在标签的后面。当JavaScript要在页面加载过程中动态建立一些Web页面的内容时,应将JavaScript放在body中。
写在body主体里,是为了实现某些部分动态地创建文档。 这里比如制作鼠标跟随事件,肯定只有当页面加载后再进行对鼠标坐标的计算。或者是filter滤镜与javascript的联合使用产生的图片淡入淡出效果等。这个是在页面加载的时候加载。
(3)javascript代码写在<body>下面:
这时候整个网页已经加载完毕了,所以这里最适合放需要立即执行的命令,而自定义函数之类的则不适合
(4)Javascript写在<head></head>中,将Javascript程序放到一个后缀名为.js的文本文件里。
在HTML里引用外部文件里的Javascript,应在Head里写一句<script src="文件名"></script>,其中src的值,就是Javascript所在文件的文件路径。
javascript作为一种脚本语言可以放在html页面中任何位置,但是浏览器解释html时是按先后顺序的,所以前面的script就先被执行。比如进行页面显示初始化的js必须放在head里面,因为初始化都要求提前进行(如给页面body设置css等);而如果是通过事件调用执行的function那么对位置没什么要求的。因而除了部分需要在网页中输出内容、调整显示的JavaScript必须放在<head></head>之间,一般的JavaScript放在<head></head>和放在<body></body>之间从执行结果来看是没有区别的。