插播:关于递归
递归指的是在函数的定义中使用函数自身的方法
递归通常不在意具体操作,只关心初始条件、结束条件和上下层的变化关系。
递归函数需要有临界停止点(结束条件),即递归不能无限制的执行下去。通常这个点为必须经过的一个数。
递归可以被栈替代。有些递归可以优化。比如遇到重复性的可以借助空间内存记录而减少递归的次数
一、日期对象
转自菜鸟教程
getFullYear()
使用 getFullYear() 获取年份
getTime()
getTime() 返回从 1970 年 1 月 1 日至今的毫秒数
setFullYear()
如何使用 setFullYear() 设置具体的日期
toUTCString()
如何使用 toUTCString() 将当日的日期(根据 UTC)转换为字符串
getDay()
如何使用 getDay() 和数组来显示星期,而不仅仅是数字
二、字符串对象+方法
字符串的索引从零开始, 所以字符串第一字符为 [0],第二个字符为 [1], 等等
字符串(String)使用长度属性length来计算字符串的长度
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置
// var a = new String("asdasffafg")
// document.write(a.length)
// for(var b = 0; b<=a.length-1;b++){
// document.write(a[b])//索引号 取值范围[0, b.length - 1]
// }
// var a = new String("asdafgsdfgsdfasd")
// document.write(a.indexOf("3"))
// .indexOf(参数1,参数2)
//从参数2的位置开始查找参数1的位置 默认从 0 开始
//参数1: 必需 查找的子串
//参数2: 可选 开始查找到的位置
//返回值:若查找到该子串 返回该字串在整个字符串第一次出现的位置 查找不到返回-1
// .lastindexOf(参数1,参数2)
// 从参数2的位置开始查找参数1的位置 默认从 最后一位 开始
三、计时器与定时器
setInterval("参数1",参数2) 间隔参数2的时间 执行一次参数1 的代码
var a = 100
var c = setInterval("b()",1000)
function b(){
document.write(a)
a--;
if (a <= 0){
clearInterval()
}
}
setTimeout("document.write(123)",5000)
延迟参数2的时间,执行参数1里的代码
参数1 :待执行的代码串
var a = 10
function box(){
document.write(a);
a--;
t = setTimeout(box,1000);
if(a <= 0){
clearTimeout(t)
}
}
box()
四、阻止默认行为
return false;
<body>
<form action="">
<p>
<label for="uname">邮箱:</label>
<input type="text" id="uname" name="uname">
</p>
<p>
<label for="pwd">密码:</label>
<input type="password" id="pwd" name="pwd">
</p>
<input type="submit" value="提交" id="but">
<!-- 提交有默认行为 提交 -->
</form>
</body>
<script>
var _input1=document.getElementById("uname")
var _input2=document.querySelector("#pwd")
var _but = document.querySelector("#but")
_but.onclick = function(){
var a = _input1.value
var b = _input2.value
if(a.indexOf("@")===-1){
alert("请输入正确邮箱格式");
return false;//阻止提交默认行为
}
if(b.length<6){
alert("密码长度最少六位");
return false;//阻止提交默认行为
}
}
</script>