Monthly Archives: November 2008

每日一JavaScript:使用值操作数据与使用引用操作数据


数字是原始类型,使用值的数据操作 <script type=”text/javascript”> <!– var x=1;    //为变量x赋值1 var y=x;    //使用值的复制操作:变量y使用了一个独立的值1 //下面的函数可以说明使用值的操作 function add_total(total,x) { total=total+x;  //这里只改变了total的内部副本 return total; } //下面调用该函数,给它传递x和y存放的数值 //x的值将被复制,该值在函数中名称为total //该函数会把y的一个副本值加到x的副本中 //这种操作不会影响到函数外部y的原始值 var q=add_total(x,y); document.write(“函数运行结果为:”+q+”<p>”); document.write(“函数运行后x值为:”+x+”<p>”); document.write(“函数运行后y值为:”+y+”<p>”); //下面是使用值的运算 //1是程序中的一个独立数值,用它和变量x中的存放的值进行比较 //在比较操作中,将对两个数字进行字节比较,看它们是否相同 if(x==1) { y=2;      //如果x的值与直接量1相同,则y的值变为2 } document.write(“现在的y值为:”+y); //–> </script> 对象和作为特殊对象类型的数组及函数都是引用类型 <script type=”text/javascript”><!– //下面创建一个对象来表示2007年6月10日 //变量myyear存储的是对对象的引用,而不是对象本身 var myyear=new Date(2007,06,10); //下面对引用进行复制操作,将得到对原始对象的一个新引用 //两个变量引用的是同一个对象值 var newyear=myyear; //下面通过新的引用来改变对象 newyear.setDate(18); //通过原始的引用可以看到对象的变化 //下面的返回值将是18,而不是10 […]

每日一JavaScript:常用正则表达式举例


正则表达式很好很强大,不仅在JavaScript,我在第一次接触到这个东西是在学PHP的时候,总之现代的很多网络编程语言都会用到,听说还有更大的用途,今天我看到的文章说是可以用来解方程,做数学题,特别特别喜欢,基本的知识目前也已经了解了,以后有空我会更深入地去学习。 ^ 对行首 $ 对行尾 ^the对以the开头行 [Ss]igna[lL]对匹配单词signal、signaL、 Signal、SignaL [Ss]igna[lL]\. 对同上,但加一句点 [mayMAY] 对包含may大写或小写字母的行 ^USER$ 对只包含USER的行 [tty]$ 对以tty结尾的行 \. 对带句点的行 [.*0] 对0之前或之后加任意字符 [000*] 对000或更多个 [iI] 对大写或小写I [iI] [nN] 对大写或小写i或n [^$] 对空行 [^.*$] 对匹配行中任意字符串 ^……$ 对包括6个字符的行 [a-zA-Z] 对任意单字符 [a-z][a-z]* 对至少一个小写字母 [^0-9\$] 对非数字或美元标识 [^0-0A-Za-z] 对非数字或字母 [123] 对1到3中一个数字 [Dd]evice 对单词device或Device De..ce 对前两个字母为De,后跟两个任意字符,最后为ce \^q对以^q开始行 ^.$ 对仅有一个字符的行 ^\.[0-9][0-9] 对以一个句点和两个数字开始的行 ‘”Device”‘ 对单词device De[Vv]ice\. […]

每日一JavaScript:获取浏览器窗口大小


以下内容摘自JavaScript相关书籍和网络,我感觉以现在的情况应该可以再简化些,牛人帮忙看下。 (1)要得到窗口的尺寸,对于不同的浏览器,需要使用不同的属性和方法:若要检测窗口的真实尺寸,在Netscape下需要使用Window的属性;在IE下需要深入Document内部对body进行检测;在DOM环境下,若要得到窗口的尺寸,需要注意根元素的尺寸,而不是< body>元素。 (2)Window对象的innerWidth属性包含当前窗口的内部宽度。Window对象的innerHeight属性包含当前窗口的内部高度。 (3)Document对象的body属性对应HTML文档的标签。Document对象的documentElement属性则表示HTML文档的根节点。 (4)document.body.clientHeight表示HTML文档所在窗口的当前高度。document.body. clientWidth表示HTML文档所在窗口的当前宽度。(for IE6) <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> <html xmlns=”http://www.w3.org/1999/xhtml”> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ /> <title>Available Region Checker</title> </head> <body> <h2 align=”center”>请调整浏览器窗口大小</h2> <hr /> <form action=”#” method=”get” name=”form1″ id=”form1″> <!–显示浏览器窗口的实际尺寸–> 浏览器窗口的高度:<input type=”text” name=”availHeight” size=”4″><br /> 浏览器窗口的宽度:<input type=”text” name=”availWidth” size=”4″ /><br /> </form> <script type=”text/javascript”> <!– var […]

每日一JavaScript:变量的作用范围


下面的内容都摘抄自JavaScript相关书籍。 (1)全局变量的作用域是全局性的,即在整个Javascript程序中,全局变量处处都存在。一般定义在”script”块中,在”function”函数外。 (2)而在函数内部声明的变量,只在函数内部起作用。这些变量是局部变量,作用域是局部性的;函数的参数也是局部性的,只在函数内部起作用。 (3)在函数内部,局部变量的优先级比同名的全局变量优先级要高:如果存在与全局变量名称相同的局部变量,或者在函数内部声明了与全局变量同名的参数,那么,该全局变量将不再起作用。 <script type=”text/javascript”> <!– var myvar=”全局变量”;   //声明一个全局变量 function checkscope() { var myvar=”局部变量”;   //声明一个同名的局部变量 document.write(myvar); //使用的是局部变量,而不是全局变量 } checkscope();          //调用函数,输出结果 //–> </script> 最后的输出结果是:局部变量。 虽然在全局作用域中可以不使用var声明变量,但在声明局部变量时,一定要使用var语句。一般情况下,函数并不知道全局变量作用域中定义了什么变量,也不知道这些变量的作用。如果函数使用的是全局变量,而不是局部变量,那么可能改变程序其他部分所依赖的全局变量的值。因此,最好在声明所有变量时都使用var语句。 JavaScript没有块级作用域,函数中声明的所有变量无论是在哪里声明的,在整个函数中都有意义。在下面的代码中,变量x,y,z作用域相同,在整个函数体中都有意义。 function test(q) { var x=0;                          //在整个函数中,x都有意义 if(typeof(q)==”object”) { var y=0;                     //y不仅在if块中有意义,在整个函数中都有意义 for(var z=0;z<5;z++) {       //z不仅在for循环中有意义,在整个函数中都有意义 document.write(z); } document.write(z);           //z仍旧有意义,输出5 } document.write(y);                //y仍旧有意义 }

每日一JavaScript:组成三角形的概率


一根木棒随机折成三段,它们能组成一个三角形的概率是多少? 求解过程就是使用JavaScript不断模拟将一根木棒随机折成三段,看它们是否能组成三角形,最后用能组成三角形的次数除以总的次数,得到最终的结果。模拟的次数越多,得到的结果就越精确。 (1)如何模拟木棒的折断。木棒的长度固定,可以假设其为1,而折成3段只需两个断点,因此执行两次Math.random()来得到断点的位置,这样就将木棒随机分为了三段,可以很容易获得每一段的长度。而模拟的次数则很容易通过for循环进行控制。 (2)如何判断是否能组成三角形。三角形的一个重要性质就是“两边之和大于第三边”。所以只要较短的两段大于第三段即可。在这个例子中,只要有一段的长度超过0.5就说明不能组成三角形。 <script type=”text/javascript”> <!– var totalCount=10000; var okCount=0; for(var i=0;i<totalCount;i++) { var duan1=Math.random();              //得到第一个断点 var duan2=Math.random();              //得到第二个断点 var l1=Math.min(duan1,duan2);         //得到第一段长度 var l2=Math.max(duan1,duan2)-l1;      //得到第二段长度 var l3=1-l1-l2;                       //得到第三段长度 if(l1>=0.5 || l2>=0.5 || l3>=0.5) continue;                             //只要有一边长超过0.5,说明不能组成三角形 okCount++; } alert(okCount/totalCount); //–> </script>