JavaScript的一段代码?

来源:百度知道 编辑:UC知道 时间:2024/09/20 09:36:43
以下的代码完全能实现检查输入的内容是否满足要求这个功能.
<SCRIPT LANGUAGE="JavaScript">
<!--
function check()
{
if(checkspace(document.searchform.searchkey.value !='请输入关键字')) {
document.searchform.searchkey.focus();
alert("请输入查询关键字!");
return false;
}
if(checkspace(document.searchform.searchkey.value)) {
document.searchform.searchkey.focus();
alert("请输入查讯关键字!");
return false;
}
document.searchform.submit();
}
function checkspace(checkstr) {
var str = '';
for(i = 0; i < checkstr.length; i++) {
str = str + ' ';
}
return (str == checkstr);
}
//-->
</script>

后面接一个搜索的代码:
<form name="searchform" method="post" action="research.asp" >
..........
<input name="searchkey" type="text" size="20" value=&qu

粗略一看...原以为你上面的JS是错误的.
然后仔细一看...应该是在IE下可行的.

首先分析一下为什么 输入空的时候为何还可以使用 checkspace(false)
从函数定义来讲.函数的参数应该是一个字符串.但为什么传过来的参数是boolean类型也可以呢....那就是因为JS是弱类型,也就是不分类型,那么至少可以调用到该方法了...接下来在 for循环时,对循环条件进行判断时,碰到 i<checkstr.length 因为 checkstr是true,没有属性length,所以在 <运算符中碰到有 undefined 就返回 false,所以就不执行循环体了,最后返回 ""==false 返回的是 true,因为在JS中,""会被转成false看待,,再与false比较,比如0=="" 返回 true,但是 0==="" 返回false

他不是加了条件嘛,if ....
返回true就执行,false就不执行啊