有些时候你精通一门语言,但是会发现你其实整天在和其它语言打交道,也许你以为这些微不足道,不至于影响你的开发进度,但恰恰是这些你不重视的东西
会浪费你很多时间,我一直以为我早在几年前就已经精通JavaScript了,直到目前,我才越来越觉得JavaScript远比我想象的复杂和强大,我
开始崇拜它,
趁着节日的空隙,把有关JavaScript的方法和技巧整理下,让每个在为JavaScript而烦恼的人明白,JavaScript就这么回事!并希
望JavaScript还可以成为你的朋友,让你豁然开朗,在项目中更好的应用~
适合阅读范围:对JavaScript一无所知~离精通只差一步之遥的人
基础知识:HTML
JavaScript就这么回事1:基础知识
1 创建脚本块
1: <script language=”JavaScript”>
2: JavaScript code goes here
3: </script>
2 隐藏脚本代码
1: <script language=”JavaScript”>
2: <!--
3: document.write(“Hello”);
4: // -->
5: </script>
在不支持JavaScript的浏览器中将不执行相关代码
3 浏览器不支持的时候显示
1: <noscript>
2: Hello to the non-JavaScript browser.
3: </noscript> ......
Javascript函数类型判断完美解决方案
在判断函数类型时,我们通常使用typeof方法,一般情况下,它会得到我们所预想的效果。但是,有一些细节并不为我们所熟知。John Resig 在分析了这些细节之后,为我们提供了一个完美的解决方案,本文将作详细介绍:
一、传统方法不为人所知的细节
毫无疑问,在判断函数类型时,我们使用的是typeof方法,比如:
function fn(){
//content
}
alert(typeof fn)//结果是"function"。
但是,该方法在一些浏览器中并不是像我们想像的那样工作。
1、Firefox2和Firefox3
在这两个浏览器中,用typeof检测HTML对象元素的类型,得到是一个不精确的“function”结果,而不是“object”,如HTMLDocument。如:
alert(typeof HTMLDocument);
//在Firefox2中结果是"function";
//在Firefox3中结果是"object";
2、Firefox2
对于正则表达式,在该浏览器中返回的结果是“function”(在Firefox3中结果是“object”),如:
var reg = /test/;
alert(typeof reg);
//在Firefox2中结果是"function";
//在Firefox3中结果是"object";
注:本人在s ......
javascript设计模式第一张有一个有趣的实现继承的方法,当然javascript本质上是实现继承,还不是典型意义上的"is-a"的逻辑继承或者说是语义继承。基本的方法就是通过function的prototype属性。
一,很简单的方法
<script type="text/javascript">
<!--
var Anim = function(){};
Anim.prototype.start = function(){alert('start');};
Anim.prototype.stop = function(){alert('stop');};
var obj = new Anim();
obj.start();
obj.stop();
// -->
</script>
二,把prototype的整体赋值-对象字面量法
<script type="text/javascript">
<!--
var Anim = function(){};
Anim.prototype = {
start:function(){alert('start');},
stop:function(){alert('stop');}
};
var obj = new Anim();
obj.start();
obj.stop();
// -->
</script>
注意:对prototype属性整体赋值只能是用户自定义的构造函数,对javascript内置的构造函数是不能的,如Function.prototype= {};
是无效的。
三,把prototype的赋值提到Function对象的prototype来操作。
<script type="text/java ......
(1)下载ClientInfo.dll(在我的资源中可以下载http://download.csdn.net/source/2141582)
(2)使用new ActiveXObject("ClientInfo.HostInfo")调用ActiveX库
(3)GetAdapterMac(0)获取网卡MAC地址
使用示例:
<HTML>
<TITLE>ClientInfoX JavaScript Sample</TITLE>
<HEAD>
<script language="JavaScript">
//////////////////////////////////////////////////
//函数与方法
//////////////////////////////////////////////////
function AddInfo(sInf)
{
xo=new ActiveXObject("ClientInfo.HostInfo")
document.getElementById("mbox").value = "\r" +sInf +document.getElementById("mbox").value;
}
function GetWindowsVersion()
{
xo=new ActiveXObject("ClientInfo.HostInfo")
AddInfo("GetWindowsVersion: "+xo.GetWindowsVersion());
//getusername();
}
function GetCPU_ID()
{
xo=new ActiveXObject("ClientInfo.HostInfo")
AddInfo("GetCPU_ID: "+xo.GetCPU_ID());
}
function GetAdapterMac()
{
xo=new ActiveXObject("ClientInfo.Hos ......
! 去除字符串两端空格的处理
如果采用传统的方式,就要可能就要采用下面的方式了
//清除左边空格
function js_ltrim(deststr)
{
if(deststr==null)return "";
var pos=0;
var retStr=new String(deststr);
if (retStr.lenght==0) return retStr;
while (retStr.substring(pos,pos+1)==" ") pos++;
retStr=retStr.substring(pos);
return(retStr);
}
//清除右边空格
function js_rtrim(deststr)
{
if(deststr==null)return "";
var retStr=new String(deststr);
var pos=retStr.length;
if (pos==0) return retStr;
while (pos && retStr.substring(pos-1,pos)==" " ) pos--;
retStr=retStr.substring(0,pos);
return(retStr);
}
//清除左边和右边空格
function js_trim(deststr)
{
if(deststr==null)return "";
var retStr=new String(deststr);
var pos=retStr.length;
if (pos==0) return retStr;
retStr=js_ltrim(retStr);
retStr=js_rtrim(retStr);
return retStr;
}
采用正则 ......
Javascript代码
<script>
var idTmr = "";
function copy(tabid){
var oControlRange = document.body.createControlRange();
oControlRange.add(tabid,0);
oControlRange.select();
document.execCommand("Copy");
}
function toExcel(tabid){
copy(tabid);
try{
var xls = new ActiveXObject( "Excel.Application" );
}catch(e){
alert( "Excel没有安装或浏览器设置不正确.请启用所有Active控件和插件");
return false;
}
xls.visible = true;
var xlBook = xls.Workbooks.Add;
var xlsheet = xlBook.Worksheets(1);
xlBook.W ......