从一小段js讲起
做web比较久了,有些方面也有了些自己的认识,所以,抽空温习一下知识,也写给一些刚入门的同学看下.
如果有错,敬请大虾指正!
先看代码:
<p id="words">“神八”归来空间交会对接任务圆满成功 </p> <script type="text/javascript"> dync('words'); function dync(o){ var p=document.getElementById(o),colors=['#ff0000','#00ff00','#0000ff']; if(p){ var w=p.innerHTML,i=0,t; setTimeout(function(){ var f=arguments.callee; t=setInterval(function(){ p.innerHTML=w.substr(0,i); i++; if(i>=w.length){ i=0; clearInterval(t); t=setInterval(function(){ p.innerHTML=w.fontcolor(colors[i]); i++; if(i>=colors.length){ i=0; clearInterval(t); setTimeout(f,2000); } },500) } },200) },1000); } } </script>
效果很简单,将一段文字逐个显示,并交替变幻几种颜色.
所用到的知识点如下:
setTimeout/setInterval,arguments,string的若干方法
setTimeout/setInterval
setTimeout(code,millisec)(setInterval相同)
code:要调用的函数或要执行的代码串.这里并不建议传入一个代码串(如:"alert('代码串');"),因为传入的代码在执行时环境是全局的,不利于优化,排错,封装.特别是封装
比较靠谱的做法是传入一个函数引用(就是函数名.),(注意:是函数引用,不带括号的),或者在比较特殊的情况下可以传入一个函数原型,就像我在代码里写的.好处是可以省略去定义一个函数.对于比较简单的函数,这样很方便,但如果是大堆代码的函数体,最好还要兼顾下性能.因为传入函数作为参数时只能传一个函数名称,没有办法带参数,所以我们需要带参时就可以用匿名函数的方法传入,如:setTimeout(function(){func(arguments)},delay);这里可以传字符串,或者当前执行域的私有变量.代码串是做不到的,代码串只能传递字符,或者全局的东西.
millisec:这个是以毫秒计的时间,比如:1000就代表1秒.
arguments
arguments是函数运行时的一个特殊变量,它包括了所有传入参数的集合,它对于新手来说是一个很神奇的东西.我也可以将它展开来写个几万字去讲述,但没必要,网上已经很多了,我当初也是看着那些讲述学习的.自己多动动脑,多动动手,就会明白了.
最常用到的属性和方法:length--参数的个数,[下标]--可以引用到该下标的参数,类似数组,callee--代表了函数本身,也是这个函数的引用,对于匿名函数很有用.
javascript就神奇在这里,它的参数是很灵活的,你可以在定义函数时不写,调用时就可以直接传入,也可以在定义时写上多个,调用时不传.非要重载做什么?它的变量本身是没有界限的,字符串可以变数字,数字也可以变函数,函数也可以变对象,对象又可以是json,这是它的优点,亦是它的缺点.
string
string是个很简单的东西,虽然它有很多方法,但很多不经常用到,手册上都有很明确的说明.像那个fontcolor,只是用来炫耀的.
常用和必须会的几个方法:
slice,replace,split,indexOf
w3school上都有说明
http://www.w3school.com.cn/js/jsref_obj_string.asp
写的比较乱,不知道你们看明白了没,我是想明白了.呵呵