木子屋 Dnawo's BLOG

分类:脚本语言

共 349 篇

比较直接量和构造函数创建的Js对象

在Js中,创建对象的方法可有两种:直接量和构造函数,如下例子: 它们的使用方法也稍有不同:构造函数对象需用new运算符来调用,而直接量对象则不用。 我们知道,使用delete可以删除对象的属性和方法,直接量对象的属性和方法一旦删除将不可再使用,而构造函数对象的属性和方法即使删除了,重新调用后它仍存在: 2009-07-16 理解: Js中构造函数相当于创建了一个类,之后可以使用new关键字来实例化出一个对象,而对象直接量相当于一次性完成了上面两个步骤,直接返回一个对象。另外,构造函数有一个prototype属性,它也是一个对象,称为原型对象,构造函数创建的类可以继承原型对象中所有的属性和方法,从这点意义来说,原型对象相当于是父类。

Js版连连看V1.0

<html> <head> <style type="text/css"> input {width:22px;height:22px;} </style> </head> <body> <script type="text/javascript"> //Cody by:dnawo var rows = 8;//行 var cols = 8;//列 var type = 4;//种类 var arrPoint = ;//全部坐标点 var selPoint = ;//选中坐标 var count = 0;…

(function (){})()语句的优势

大都时候我们代码这么写: 我们知道,程序的执行顺序是从上到下的,假如在某个地方因为一些原因我们不想让下边的程序再继续执行了,例如在do something前终止程序的执行,很遗憾,这是不可能的!但如果用(function (){})()语句,那就有可能了: 除了能自由终止程序执行外,还有一个好处就是一退出程序,之前声明的变量生存期也随之结束,变量将被释放!

奇怪的错误:document.getElementById为空或不是对象

上边代码执行出错,提示"document.getElementById(...) 为空或不是对象"!通常只有页面上不存在指定Id的元素或是脚本执行时指定Id的元素还未初始化才会出现这个提示,可是上边的代码中并不满足这两点条件,有些奇怪,最后尝试补全html元素,却能正常执行了:

Javascript字符串匹配match和exec

在Javascript中,String对象的match方法和RegExp对象的exec方法都可用于字符串的匹配,今天我们来看看怎么使用他们。 match match返回的都是一个数组,但又分成两种情形:当进行非全局匹配时该数组第一项为完整匹配字符串,其他项则为正则表达式中括号内的子匹配;当进行全局匹配时该数组全部项都为完整匹配字符串。 exec exec返回的也是一个数组,并且第一项总是完整匹配字符串,其他项则为正则表达式中括号内的子匹配,但也可以分成两种情形:当进行非全局匹配时结果和match的非全局匹配相同;当进行全局匹配时,如果要返回第二个匹配字符中及其子匹配就得再次调用同一个RegExp对象的exec方法,如果要返回第三个匹配字符中及其子匹配就得第三次调用同一个RegExp对象的exec方法,依此类推,也就是说,当第n次调用同一RegExp对象的exec方法时将返回第n个完整匹配字符串及其子匹配组成的数组。…

js处理页面上符合某一特征的所有链接

要求:当链接地址中含有.jar、.jad、.sis、.sisx、.txt、.rar、.zip等扩展名时则在链接前加一个木子屋的链接。 实现脚本一: 实现脚本二: 在实现过程中需要注意的是document.links会随着木子屋链接的添加而发生变化,上边两个脚本都针对这一问题进行了处理,如脚本一中使用"i++",脚本二中先将document.links赋给一个数组。 下边几个脚本为测试过中写的,都存在着一些问题,无法正确的完成所需功能: 错误脚本一: 错误脚本二: 错误脚本三:

在DOM对象后面插入一个同级对象

如果要在某个DOM对象前面插入一个同级对象,我们可以使用insertBefore方法,但奇怪的却是没有一个方法能直接在DOM对象后台插入一个同级对象,变通一下还是有办法的:

在不改变原函数前提下对函数进行扩展

假如一个html页面中引用了一个外部js文件,js文件中定义了window.onload=fun(){},现在的问题是我们不能确定html页面中是否也有定义window.onload=fun(){},并要求html页面中的window.onload仍要能正常执行!下边我们来看看怎么实现(为了方便说明,下边示例js代码都在html页面中): 上边代码中第二个window.onload定义覆盖了第一个,因而alert("aaa")没有执行,而我们的要求是"aaa"和"bbb"都要弹出来!下边是我想出的一种解决方法: 经测试是可行的,但实际使用时必须保证引用外部脚本代码放在页面最底部,否则js文件中的window.onload可能会被覆盖而无法执行。