为什么我将下列javascript脚本放在body中能够输出正确结果 而放在head中总是说邮箱错误,即使正确脚本如下
发布网友
发布时间:2022-04-21 11:19
我来回答
共3个回答
热心网友
时间:2022-04-21 12:49
你好,是这样的:
当你把用来验证email的js脚本放到头部的时候,使用document.getElementById('mail')是无法取到id为mail的DOM节点的,也就是说var sText = document.getElementById('mail').value这句赋值语句没有执行预期的赋值目的,这是因为放在head元素里面的js代码在body元素内容呈现之前就开始工作了,这样的话在上面的赋值语句工作的时候,id为mail的节点都不存在当然不会有预期的赋值结果了,相反如果把js脚本放到body元素内底部,那么页面先呈现body内容,再执行js脚本,那就没什么问题了。
你可以使用firefox浏览器中的firebug工具对这个问题进行分析,在这个工具里面你可以检测到任何时候js代码运行的相关变量的值等信息。
个人不是很理解“sValue(){}”这个函数的作用,感觉像是在id为mail的输入框失去焦点的时候自动把该输入框里面的值赋值给sText。去掉这个函数相关的代码,如果正则表达式没错误,那么相信应该是个完全正确的邮件地址验证功能。
热心网友
时间:2022-04-21 14:07
没有一定说javascript一定要放在head之后而不能放在body之后阿。
javascript作为一种脚本语言可以放在html页面中任何位置。只不过有些处于习惯或者为了方便维护,才把javascript写在body之前。
至于
script language=javasscript
//javascript appears here.
表示以下在<script>元素里的脚本是javascript脚本语言,browser会用javascript插件来解释一下语句的。这句话一般会写在<script>元素里。
下面那句是注释,没有特殊意义,browser也不会去解释这些语句的,这些是给developer看得。
热心网友
时间:2022-04-21 15:41
不会出问题,你出错的代码是怎么样的?你获得输入的邮箱地址是在函数体内吗?如果你放在BODY中,你可以试试放在函数体内。或者报错的时候,看看你获得邮箱地址到底是不是正确的邮箱地址。我觉得应该获得的邮箱地址就是错误的。否则不会出这个问题。