Monthly Archives: September 2009

为什么document.body.clientWidth 为0

同样的代码,在老的工程中运行正常,到了新的工程中就行为怪异.跟踪后发现,是document.body.clientWidth总返回0对比新老工程,发现vs2008生成的新工程中使用的是 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;而vs2003生成的老工程中使用的是&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd "> google了一下,还有个一解决方案:用document.documentElement.clientHeight

Posted in Web Development | Leave a comment

学习Javascript闭包(Closure)(ZT)

http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 要理解闭包,首先必须理解Javascript特殊的变量作用域。 一、变量的作用域 变量的作用域无非就是两种:全局变量和局部变量。 Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。   var n=999;   function f1()     {    alert(n);  }   f1(); // 999 另一方面,在函数外部自然无法读取函数内的局部变量。   function f1()  {    var n=999;  }   alert(n); // error 这里有一个地方需要注意,函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量!   function f1(){    n=999;  }   f1();   alert(n); // 999 二、如何从外部读取局部变量? 出于种种原因,我们有时候需要得到函数内的局部变量。但是,前面已经说过了,正常情况下,这是办不到的,只有通过变通方法才能实现。 那就是在函数的内部,再定义一个函数。   function f1()    {     n=999;     function f2()          {      alert(n); // 999    } … Continue reading

Posted in Web Development | Leave a comment