• JavaScript技巧手冊


    js小技巧
    每一项都是js中的小技巧,但十分的有用!

     
    1.document.write(""); 输出语句 
    2.JS中的凝视为// 
    3.传统的HTML文档顺序是:document->html->(head,body) 
    4.一个浏览器窗体中的DOM顺序是:window->(navigator,screen,history,location,document) 
    5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value) 
    6.一个小写转大写的JS: document.getElementById("output").value = 
    document.getElementById("i
    nput").value.toUpperCase(); 
    7.JS中的值类型:String,Number,Boolean,Null,Object,Function 
    8.JS中的字符型转换成数值型:parseInt(),parseFloat() 
    9.JS中的数字转换成字符型:(""+变量) 
    10.JS中的取字符串长度是:(length) 
    11.JS中的字符与字符相连接使用+号. 
    12.JS中的比較操作符有:==等于,!=不等于,>,>=,<.<= 
    13.JS中声明变量使用:var来进行声明 
    14.JS中的推断语句结构:if(condition){}else{} 
    15.JS中的循环结构:for([initial e­xpression];[condition];[upadte e­xpression]) {inside 
    loop} 
    16.循环中止的命令是:break 
    17.JS中的函数定义:function functionName([parameter],...) 
    18.当文件里出现多个form表单时.能够用document.forms[0],document.forms[1]来取代. 
    19.窗体:打开窗体window.open(), 关闭一个窗体:window.close(), 窗体本身:self 
    20.状态栏的设置:window.status="字符"; 
    21.弹出提示信息:window.alert("字符"); 
    22.弹出确认框:window.confirm(); 
    23.弹出输入提示框:window.prompt(); 
    24.指定当前显示链接的位置:window.location.href="URL" 
    25.取出窗口中的全部表单的数量:document.forms.length 
    26.关闭文档的输出流:document.close(); 
    27.字符串追加连接符:+= 
    28.创建一个文档元素:document.createElement(),document.createTextNode() 
    29.得到元素的方法:document.getElementById() 
    30.设置表单中全部文本型的成员的值为空: 
    var form = window.document.forms[0] 
    for (var i = 0; i if (form.elements.type == "text"){ 
    form.elements.value = ""; 


    31.复选button在JS中推断是否选中:document.forms[0].checkThis.checked (checked属性代表为是否选中
    返回TRUE或FALSE) 
    32.单选button组(单选button的名称必须同样):取单选button组的长度document.forms[0].groupName.length 
    33.单选button组推断是否被选中也是用checked. 
    34.下拉列表框的值:document.forms[0].selectName.options[n].value (n有时用下拉列表框名称加上.sel
    ectedIndex来确定被选中的值) 
    35.字符串的定义:var myString = new String("This is lightsword"); 
    36.字符串转成大写:string.toUpperCase(); 字符串转成小写:string.toLowerCase(); 
    37.返回字符串2在字符串1中出现的位置:String1.indexOf("String2")!=-1则说明没找到. 
    38.取字符串中指定位置的一个字符:StringA.charAt(9); 
    39.取出字符串中指定起点和终点的子字符串:stringA.substring(2,6); 
    40.数学函数:Math.PI(返回圆周率),Math.SQRT2(返回开方),Math.max(value1,value2)返回两个数中的最
    在值,Math.pow(value1,10)返回value1的十次方,Math.round(value1)四舍五入函数,Math.floor(Math.ra
    ndom()*(n+1))返回随机数 
    41.定义日期型变量:var today = new Date(); 
    42.日期函数列表:dateObj.getTime()得到时间,dateObj.getYear()得到年份,dateObj.getFullYear()得到
    四位的年份,dateObj.getMonth()得到月份,dateObj.getDate()得到日,dateObj.getDay()得到日期几,dat
    eObj.getHours()得到小时,dateObj.getMinutes()得到分,dateObj.getSeconds()得到秒,dateObj.setTi
    me(value)设置时间,dateObj.setYear(val)设置年,dateObj.setMonth(val)设置月,dateObj.setDate(va
    l)设置日,dateObj.setDay(val)设置星期几,dateObj.setHours设置小时,dateObj.setMinutes(val)设置分,
    dateObj.setSeconds(val)设置秒 [注意:此日期时间从0開始计] 
    43.FRAME的表示方式: [window.]frames[n].ObjFuncVarName,frames["frameName"].ObjFuncVarN
    ame,frameName.ObjFuncVarName 
    44.parent代表父亲对象,top代表最顶端对象 
    45.打开子窗体的父窗体为:opener 
    46.表示当前所属的位置:this 
    47.当在超链接中调用JS函数时用:(javascript :)来开头后面加函数名 
    48.在老的浏览器中不运行此JS: 
    49.引用一个文件式的JS: 
    50.指定在不支持脚本的浏览器显示的HTML: 
    51.当超链和onCLICK事件都有时,则老版本号的浏览器转向a.html,否则转向b.html.例:dfsadf 
    52.JS的内建对象有:Array,Boolean,Date,Error,EvalError,Function,Math,Number,Object,RangeError,
    ReferenceError,RegExp,String,SyntaxError,TypeError,URIError 
    53.JS中的换行:/n 
    54.窗体全屏大小: 
    55.JS中的all代表其下层的所有元素 
    56.JS中的焦点顺序:document.getElementByid("表单元素").tabIndex = 1 
    57.innerHTML的值是表单元素的值:如 
    "how are you"

    ,则innerHTML的值就是:how are you 
    58.innerTEXT的值和上面的一样,仅仅只是不会把这样的标记显示出来. 
    59.contentEditable可设置元素是否可被改动,isContentEditable返回是否可改动的状态. 
    60.isDisabled推断是否为禁止状态.disabled设置禁止状态 
    61.length取得长度,返回整型数值 
    62.addBehavior()是一种JS调用的外部函数文件其扩展名为.htc 
    63.window.focus()使当前的窗体在全部窗体之前. 
    64.blur()指失去焦点.与FOCUS()相反. 
    65.select()指元素为选中状态. 
    66.防止用户对文本框中输入文本:onfocus="this.blur()" 
    67.取出该元素在页面中出现的数量:document.all.tags("div(或其他HTML标记符)").length 
    68.JS中分为两种窗口输出:模态和非模态.window.showModaldialog(),window.showModeless() 
    69.状态栏文字的设置:window.status='文字',默认的状态栏文字设置:window.defaultStatus = '文字.'; 
    70.加入到收藏夹:external.AddFavorite("http://www.dannyg.com"t;,"jaskdlf"); 
    71.JS中遇到脚本错误时不做不论什么操作:window.onerror = doNothing; 指定错误句柄的语法为:window.on
    error = handleError; 
    72.JS中指定当前打开窗体的父窗体:window.opener,支持opener.opener...的多重继续. 
    73.JS中的self指的是当前的窗体 
    74.JS中状态栏显示内容:window.status="内容" 
    75.JS中的top指的是框架集中最顶层的框架 
    76.JS中关闭当前的窗体:window.close(); 
    77.JS中提出是否确认的框:if(confirm("Are you sure?

    "))else{alert("Not Ok");} 
    78.JS中的窗体重定向:window.navigate("http://www.sina.com.cn"t;); 
    79.JS中的打印:window.print() 
    80.JS中的提示输入框:window.prompt("message","defaultReply"); 
    81.JS中的窗体滚动栏:window.scroll(x,y) 
    82.JS中的窗体滚动到位置:window.scrollby 
    83.JS中设置时间间隔:setInterval("expr",msecDelay)或setInterval(funcRef,msecDelay)或setTimeou

    84.JS中的模态显示在IE4+行,在NN中不行:showModalDialog("URL"[,arguments][,features]); 
    85.JS中的退出之前使用的句柄:function verifyClose(){event.returnValue="we really like you 
    and ho
    pe you will stay longer.";}} window.onbeforeunload=verifyClose; 
    86.当窗口第一次调用时使用的文件句柄:onload() 
    87.当窗口关闭时调用的文件句柄:onunload() 
    88.window.location的属性: protocol(http:),hostname(example.com),port(80),host(e
    xample.com:80),pathname("/a/a.html"),hash("#giantGizmo",指跳转到对应的锚记),href(所有的信
    息) 
    89.window.location.reload()刷新当前页面. 
    90.window.history.back()返回上一页,window.history.forward()返回下一页,window.history.go(返回
    第几页,也能够使用訪问过的URL) 
    91.document.write()不换行的输出,document.writeln()换行输出 
    92.document.body.noWrap=true;防止链接文字折行. 
    93.变量名.charAt(第几位),取该变量的第几位的字符. 
    94."abc".charCodeAt(第几个),返回第几个字符的ASCii码值. 
    95.字符串连接:string.concat(string2),或用+=进行连接 
    96.变量.indexOf("字符",起始位置),返回第一个出现的位置(从0開始计算) 
    97.string.lastIndexOf(searchString[,startIndex])最后一次出现的位置. 
    98.string.match(regExpression),推断字符是否匹配. 
    99.string.replace(regExpression,replaceString)替换现有字符串. 
    100.string.split(分隔符)返回一个数组存储值. 
    101.string.substr(start[,length])取从第几位到指定长度的字符串. 
    102.string.toLowerCase()使字符串所有变为小写. 
    103.string.toUpperCase()使所有字符变为大写. 
    104.parseInt(string[,radix(代表进制)])强制转换成整型. 
    105.parseFloat(string[,radix])强制转换成浮点型. 
    106.isNaN(变量):測试是否为数值型. 
    107.定义常量的keyword:const,定义变量的keyword:var 
    --------------------------------------------------------------------------------------------------------------------------------
    javascript38种小技巧,推荐新手查看。


    事件源对象 
    event.srcElement.tagName 
    event.srcElement.type 
    捕获释放 
    event.srcElement.setCapture(); 
    event.srcElement.releaseCapture(); 
    事件按键 
    event.keyCode 
    event.shiftKey 
    event.altKey 
    event.ctrlKey 
    事件返回值 
    event.returnValue 
    鼠标位置 
    event.x 
    event.y 
    窗口活动元素 
    document.activeElement 
    绑定事件 
    document.captureEvents(Event.KEYDOWN); 
    訪问窗口元素 
    document.all("txt").focus(); 
    document.all("txt").select(); 
    窗口命令 
    document.execCommand 
    窗口COOKIE 
    document.cookie 
    菜单事件 
    document.oncontextmenu 
    创建元素 
    document.createElement("SPAN"); 
    依据鼠标获得元素: 
    document.elementFromPoint(event.x,event.y).tagName=="TD 
    document.elementFromPoint(event.x,event.y).appendChild(ms) 
    窗口图片 
    document.images[索引] 
    窗口事件绑定 
    document.onmousedown=scrollwindow; 
    元素 
    document.窗口.elements[索引] 
    对象绑定事件 
    document.all.xxx.detachEvent('onclick',a); 
    插件数目 
    navigator.plugins 
    取变量类型 
    typeof($js_libpath) == "undefined" 
    下拉框 
    下拉框.options[索引] 
    下拉框.options.length 
    查找对象 
    document.getElementsByName("r1"); 
    document.getElementById(id); 
    定时 
    timer=setInterval('scrollwindow()',delay); 
    clearInterval(timer); 
    UNCODE编码 
    escape() ,unescape 
    父对象 
    obj.parentElement(dhtml) 
    obj.parentNode(dom) 
    交换表的行 
    TableID.moveRow(2,1) document.all.csss.href = "a.css"; 
    替换CSS

    并排显示 
    display:inline 
    隐藏焦点 
    hidefocus=true 
    依据宽度换行 
    style="word-break:break-all" 
    自己主动刷新 
    <meta HTTP-EQUIV="refresh" CONTENT="8;URL=http://c98.yeah.net"> 
    简单邮件 
    <a href="mailto:aaa@bbb.com?subject=ccc&body=xxxyyy"> 
    高速转到位置 
    obj.scrollIntoView(true) 
    锚 
    <a name="first"> 
    <a href="#first">anchors</a> 
    网页传递參数 
    location.search(); 
    可编辑 
    obj.contenteditable=true 
    运行菜单命令 
    obj.execCommand 
    双字节字符 
    /[^/x00-/xff]/ 
    汉字 
    /[/u4e00-/u9fa5]/ 
    让英文字符串超出表格宽度自己主动换行 
    word-wrap: break-word; word-break: break-all; 
    透明背景 
    <IFRAME src="1.htm" width=300 height=180 allowtransparency></iframe> 
    获得style内容 
    obj.style.cssText 
    HTML标签 
    document.documentElement.innerHTML 
    第一个style标签 
    document.styleSheets[0] 
    style标签里的第一个样式 
    document.styleSheets[0].rules[0] 
    防止点击空链接时,页面往往重置到页首端。 
    <a href="javascript:function()">word</a> 
    上一网页源 
    asp: 
    request.servervariables("HTTP_REFERER") 
    javascript: 
    document.referrer 
    释放内存 
    CollectGarbage(); 
    禁止右键 
    document.oncontextmenu = function() { return false;} 
    禁止保存 
    <noscript><iframe src="*.htm"></iframe></noscript> 
    禁止选取<body oncontextmenu="return false" ondragstart="return false" onselectstart 
    ="return false" onselect="document.selection.empty()" 
    oncopy="document.selection.empty()" onbeforecopy="return 
    false"onmouseup="document.selection.empty()> 
    禁止粘贴 
    <input type=text onpaste="return false"> 
    地址栏图标 
    <link rel="Shortcut Icon" href="favicon.ico"> 
    favicon.ico 名字最好不变16*16的16色,放虚拟文件夹根文件夹下 
    收藏栏图标 
    <link rel="Bookmark" href="favicon.ico"> 
    查看源代码 
    <input type=button value=查看网页源码 onclick="window.location = 'view-source:'+ 
    'http://www.csdn.net/'"> 
    关闭输入法 
    <input style="ime-mode:disabled"> 
    自己主动全选 
    <input type=text name=text1 value="123" onfocus="this.select()"> 
    ENTER键能够让光标移到下一个输入框 
    <input onkeydown="if(event.keyCode==13)event.keyCode=9"> 
    文本框的默认值 
    <input type=text value="123" onfocus="alert(this.defaultValue)"> 
    title换行 
    obj.title = "123 sdfs " 
    获得时间所代表的微秒 
    var n1 = new Date("2004-10-10".replace(/-/g, "//")).getTime() 
    窗体是否关闭 
    win.closed 
    checkbox扁平 
    <input type=checkbox style="position: absolute; clip:rect(5px 15px 15px 
    5px)"><br> 
    获取选中内容 
    document.selection.createRange().duplicate().text 
    自己主动完毕功能 
    <input type=text autocomplete=on>打开该功能 
    <input type=text autocomplete=off>关闭该功能 
    窗体最大化 
    <body onload="window.resizeTo(window.screen.width - 
    4,window.screen.height-50);window.moveTo(-4,-4)"> 
    无关闭buttonIE 
    window.open("aa.htm", "meizz", "fullscreen=7"); 
    统一编码/解码 
    alert(decodeURIComponent(encodeURIComponent("http://你好.com?as= hehe"))) 
    encodeURIComponent对":"、"/"、";" 和 "?"也编码 
    表格行指示 
    <tr onmouseover="this.bgColor='#f0f0f0'" onmouseout="this.bgColor='#ffffff'"> 
    ------------------------------------------------------------------------------------------------------------------------------------------------

    核心(Core) Javascript 学习手记

    核心(Core) Javascript 学习手记

    linenum

    CreateD BY STABX, AT 2006-9-5.

    Javascript Notes By shawl.qiu

    ---/-------------------------------------------------------------

    -3.1 函数比其它代码优先运行 
    -3. 优先级 
    -2.4 同一时候初始化多个变量并赋同样值 
    -2.3 在函数中使用 var 定义一个变量, 该变量将影响整个函数, 不分先后. 
    -2.2 全局变量与局部变量 
    -2.1.2 普通定义变量 2 
    -2.1.1 普通定义变量 1 
    -2.1 普通定义变量 
    -2. var 定义变量 
    -1.5 in 操作符 
    -1.4.2 true 等价 1, false 等价 0. 
    -1.4 == 与 === 
    -1.4.1 NaN 
    -1.3 0/0=?

     
    -1.2 类型转换 
    -1.1 -- 与 ++ 
    -1.1.1 
    -1. 运算符

    0. 语法 
    0.1 Switch

    1. button 
    1.1 前进后退button 
    1.2 确认button 
    1.3 最原始也最有用的 UBB 代码输入方法——SCRIPT & FORM 
    1.4 Prompt 
    1.5.1 鼠标经过时选中,并隐藏原框的文字。 移开再显示文字 ——文本框 
    1.5 鼠标经过时选中 ——复选框 Focus() 
    1.6 鼠标经过自己主动提交表单

    2. 接收键盘事件 
    2.1 按不论什么键关闭窗体 
    2.2 实时显示更改的图片链接

    3. 数组/Array 
    3.1 Javascript 结合 Asp 使用数组

    4. 控制图片大小

    5. 双击拷贝文本

    6. IE 全屏显示

    7. 文本框回车链接

    8. 顯示頁面全部元素

    9. 正則表達式

    10. 接收鼠标事件 
    10.1 单击鼠标右击关闭窗体 (我用左手) 
    10.2 鼠标移过选择表单项

    11. 字符串 
    11.1 检測字符串中是否出现某字符

    12. 随机数 
    12.1.1 生成 GUID 2 
    12.1 生成 GUID

    13. 时间操作 
    13.1 以毫秒为单位的倒计时跳转, 来源 CSDN

    14. switch 
    14.1 简单 switch 
    15 if 推断 
    15.1.2 简单 if 推断 3 
    15.1.1 简单 if 推断 2 
    15.1 简单 if 推断 
    15.2 if 推断的 三个 写法 
    15.3 推断运行文件使用网络还是使用本地协议 
    15.4 if...else 写法

    16. 简单 while

    16. while

    17. do while 
    17.1.2 简单 do while 
    17.1 简单 do while

    18. for 
    18.1 简单 for 
    18.2 简单 for 1 
    18.3 循环列出从 a - z 的字母 
    18.3 n阶乘 
    18.4 Fibonacci Numbers

    19. for in 
    19.1.1 简单 for in 1 
    19.1 简单 for in 
    19.2.1 for in 赋值 [数组] 1 
    19.2 for in 赋值 [数组]

    20. try, catch, finally 
    20.1.1 简单 try, catch 1 
    20.1 简单 try, catch

    21. with 
    21.1 简单with (还有一写法) 
    21.1 简单 with

    22. break, continue 
    22.1 continue 
    22.2.1 break 标签 
    22.2 break

    23. call, apply 
    23.1.1 找出数组中最大的数 
    23.1 apply

    24. object 
    24.1.1 创建简单对象 一 
    24.1.2 创建简单对象 二 
    24.1 创建简单对象 
    24.2.1 创建嵌套对象 1 
    24.2 创建嵌套对象 
    24.3 删除对象中的属性 
    24.4.1 遍历对象中的属性名 1 
    24.4 遍历对象中的属性名 
    24.5 obj.propertyIsEnumerable('ele') 
    24.6 obj.hasOwnProperty('ele')

    25. toString 
    25.1 使用 toString 列出数组中的元素

    26. Array() 
    26.0.1 简单创建数组, 并赋值 2 
    26.0 简单创建数组, 并赋值 
    26.0.3 创建数组中的数组 
    26.0.4 创建数组中的对象 
    26.0.2 简单创建数组 
    26.1 [array].push(), [array].pop() 
    26.2 数组排序 
    26.3 创建数组指定维数, 从 1 開始.

    27. RegExp 
    27.1 普通操作 1 
    27.2 test 语句 
    27.3 exec 语句

    28. new 语法

    29. isNaN

    30. Date() 
    30.1 输出年月日, 时分秒 的日期格式

    31. function 函数 
    31.1.1.1 三种定义函数的方法 1.1 
    31.10 在数组中存储函数, 并引用 
    31.1.1 三种定义函数的方法 1 
    31.1.2 三种定义函数的方法 2 
    31.1 三种定义函数的方法 
    31.2 在标签中写函数 
    31.3 创建嵌套函数 
    31.4.1 创建递归函数 1 
    31.4 创建递归函数 
    31.5 创建 函数对象 
    31.6 在函数内部定义的函数仅仅能在该函数内部调用 
    31.7 定义函数变量, 并赋值 
    31.8 变量引用函数 
    31.9 在对象中存储函数, 并引用 
    31.11 function.call() 
    31.12 在函数内定义的变量能够被下级内嵌函数调用

    32. typeof 查看数据类型 
    32.1

    33. obj.valueOf() 返回原始值

    34. Math 对象 
    34.1.1 生成 1 至 4 的随机数 
    34.1 Math.random(); 
    34.2 求 x 的 n 次方

    35. delete

    36. confirm() 确认框 
    36.1 带条件确认框

    37. window.open

    37. window 
    37.1 打开没有焦点的窗体

    38. return 返回值 
    38.1 return true 
    38.2 return undefined

    39. throw 
    39.1 简单产生错误

    40. arguments 
    40.1 推断 arguments.length 
    40.2 列出全部 argument 的值 
    40.3 arguments.callee / 调用函数本身

    41. .to****** 
    41.1 toString

    42. parseInt() / parseFolat()

    --------------------------------

    42. parseInt() / parseFolat() 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var str='1.1322 this test '; 
    document.write(('str like this: ').bold()+str.fontcolor('red')+'<br/>'); 
    document.write(('parseInt(str): ').bold()+parseInt(str)+'<br/>'); 
    document.write(('parseFloat(str): ').bold()+parseFloat(str)+'<br/>');

    document.write(('parseInt(1111,2): ').bold()+parseInt(1111,2)+'<br/>'); 
    document.write(('parseInt(1111,8): ').bold()+parseInt(1111,8)+'<br/>'); 
    document.write(('parseInt(1111): ').bold()+parseInt(1111)+'<br/>'); 
    document.write(('parseInt(1111,16): ').bold()+parseInt(1111,16)+'<br/>'); 
    //]]> 
    </script>

    41. .to****** 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var num=12345.6789

    document.write(('parseInt(num): ').bold()+parseInt(num)+'<br/>');

    document.write(('num.toFixed(0): ').bold()+num.toFixed(0)+'<br/>'); 
    document.write(('num.toFixed(2): ').bold()+num.toFixed(2)+'<br/>');

    document.write(('num.toExponential(2): ').bold()+num.toExponential(2)+'<br/>'); 
    document.write(('num.toExponential(1): ').bold()+num.toExponential(1)+'<br/>');

    document.write(('num.toPrecision(1): ').bold()+num.toPrecision(1)+'<br/>'); 
    document.write(('num.toPrecision(2): ').bold()+num.toPrecision(2)+'<br/>');

    //]]> 
    </script>

    41.1 toString 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var num=123456789

    document.write(('num.toString(): ').bold()+num.toString()+'<br/>'); 
    document.write(('num.toString(2): ').bold()+num.toString(2)+'<br/>'); 
    document.write(("'0'+num.toString(8): ").bold()+'0'+num.toString(8)+'<br/>'); 
    document.write(("'0x'+num.toString(16): 
    ").bold()+'0x'+num.toString(16)+'<br/>');

    //]]> 
    </script>

     

    40. arguments

    40.1 推断 arguments.length 
    <script type="text/javascript"> 
    //<![CDATA[ 
    function t(a, b, c, d){ 
    if(arguments.length!=4)document.write(('error! argument must be 4 
    element.').fontcolor('red')+' current arguments length: 
    '+arguments.length+'<br/>'); 
    else document.write(('this right: '+arguments.length).bold()+' arguments<br/>');


    t(); 
    t('a', 'b', 'c', 'd'); 
    t('a', 'b', 'c', 'd', 'e'); 
    //]]> 
    </script>

    40.2 列出全部 argument 的值 
    <script type="text/javascript"> 
    //<![CDATA[ 
    function t(){ 
    for(var i=0; i<arguments.length; i++){ 
    document.write(('arguments['+i+']').bold()+' = 
    '+arguments[i].fontcolor('red')+'<br/>'); 


    var temp='test'; 
    t('aaa', 'bbb', 'ccc', 'ddd', 'eee', temp); 
    //]]> 
    </script>

    40.3 arguments.callee / 调用函数本身 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var t=function(x){ 
    document.write(x+'<br/>'); 
    if(x>1){ 
    arguments.callee(x-1); 


    t(10); 
    //]]> 
    </script>

    39. throw

    39.1 简单产生错误 
    <script type="text/javascript"> 
    //<![CDATA[ 
    t(10); 
    t();

    function t(x){ 
    if(typeof x==='undefined')throw new Error('x must be own a value'); 
    document.write(x); 

    //]]> 
    </script>

    38. return 返回值

    38.1 return true 
    <script type="text/javascript"> 
    //<![CDATA[ 
    function t(ipt){ 
    window.status=ipt; 
    return true; 

    t('test this'); 
    //]]> 
    </script>

    38.2 return undefined 
    <script type="text/javascript"> 
    //<![CDATA[ 
    function t(t){ 
    if(t==null)return; 

    document.write(t()); // undefined 
    //]]> 
    </script>

    37. window

    37. window.open

    37.1 打开没有焦点的窗体 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var w=window.open('/') 
    w.blur(); 
    window.focus(); 
    //]]> 
    </script>

    36. confirm() 确认框

    36.1 带条件确认框 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var x=confirm('what doing with you') 
    if(x){alert('ok')}else alert('good choice'); 
    //]]> 
    </script>

    35. delete 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var t={i:'ok', j:'ok too'} 
    document.write(delete t.i); // true 
    document.write('<br/>'); 
    document.write(delete t); // false 不能删除 使用 var 定义的变量或对象 
    document.write('<br/>'); 
    document.write(delete n); // true 删除不存在的元素. 
    document.write('<br/>'); 
    document.write(delete j); // true 
    document.write('<br/>'); 
    //]]> 
    </script>

    34. Math 对象

    34.1 Math.random();

    34.1.1 生成 1 至 4 的随机数 
    <script type="text/javascript"> 
    //<![CDATA[ 
    document.write(parseInt(Math.random()*4+1)+'<br/>'); 
    //]]> 
    </script>

    34.2 求 x 的 n 次方 
    <script type="text/javascript"> 
    //<![CDATA[ 
    document.write(Math.pow(2,10)); 
    //]]> 
    </script>

    33. obj.valueOf() 返回原始值 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var a=1, b='test', c=false, d=new Object(); 
    document.write(a.valueOf()+'<br/>'); // 1 
    document.write(b.valueOf()+'<br/>'); // test 
    document.write(c.valueOf()+'<br/>'); // false 
    document.write(d.valueOf()+'<br/>'); // [object Object] 
    //]]> 
    </script>

    32. typeof 查看数据类型 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var a=['a', 'b', 'c'] 
    document.write(typeof a); // object 
    document.write(a.valueOf()); // a, b, c 
    document.write(typeof null); // object 
    //]]> 
    </script>

    32.1 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var a=['a', 'b', 'c'] 
    document.write(typeof a); // object 
    document.write(a.valueOf()); // a, b, c 
    //]]> 
    </script>

    31. function 函数

    31.1 三种定义函数的方法 
    <script type="text/javascript"> 
    //<![CDATA[ 
    function f(){ alert('function f');}; 
    var f1=function(){ alert('function f1');}; 
    var f2=new Function('', "alert('function f2')"); 
    f(); f1(); f2(); 
    //]]> 
    </script>

    31.1.1 三种定义函数的方法 1 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var t=new Function('a', 'b', 'return a+b;') 
    document.write(t('ok ', 'test this')); 
    //]]> 
    </script>

    31.1.1.1 三种定义函数的方法 1.1 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var t=new Function("return 'test this'") 
    document.write(t()); 
    //]]> 
    </script>

    31.1.2 三种定义函数的方法 2 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var t=function(str){return 'this test'+str};

    document.write(t(', right.')); 
    //]]> 
    </script>

    31.2 在标签中写函数 
    <div onclick="javascript:var go=function(){alert(111)};go();">div 可用</div> 
    <div onclick="go()">div1 不可用</div> 
    <div onclick="javascript:( function(){alert(111);} )()">div2 可用</div> 
    <div onclick="javascript:function go(){alert(111);}go();">div3 可用</div>

    31.3 创建嵌套函数 
    <script type="text/javascript"> 
    //<![CDATA[ 
    function level1(){ 
    var lNm='level 1' 
    document.write(lNm+'<br/>'); 
    function level2(){ 
    var lNm='level 2' 
    document.write(lNm+'<br/>'); 

    level2(); 

    level1(); 
    //]]> 
    </script>

    31.4 创建递归函数 
    <% 
    var i=0; 
    function t(){ 
    i++; 
    if(i<100){ 
    Response.Write(i+'<br/>'); 
    return t(); 

    Response.Write(i+'<br/>'); 

    t(); 
    %>

    31.4.1 创建递归函数 1 
    <script type="text/javascript"> 
    //<![CDATA[ 
    function fctr(n){ 
    if(n<=1)return 1; 
    return n*fctr(n-1); 

    document.write(fctr(4)); 
    //]]> 
    </script>

    31.5 创建 函数对象 
    <script type="text/javascript"> 
    //<![CDATA[ 
    function fT(){ 
    this.title='o test'; 
    this.subtitle=fTt(); 
    function fTt(){ 
    return 'o subtitle'; 


    var t=new fT(); 
    document.write(t.title+'<br/>'); 
    document.write(t.subtitle+'<br/>'); 
    t=null; 
    //]]> 
    </script>

    31.6 在函数内部定义的函数仅仅能在该函数内部调用 
    <script type="text/javascript"> 
    //<![CDATA[ 
    function lev1(){ 
    document.write('lev 1<br/>'); 
    function lev2(){ 
    document.write('lev 2<br/>'); 

    lev2(); 

    lev1(); 
    lev2(); // 出错, 在函数内部定义的函数仅仅能在该函数内部调用

    //]]> 
    </script>

    31.7 定义函数变量, 并赋值 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var t=(function(str){return str+str+'<br/>';})('test this ') 
    document.write(t); 
    //]]> 
    </script>

    31.8 变量引用函数 
    <script type="text/javascript"> 
    //<![CDATA[ 
    function t(x){ 
    x+=''; 
    return x+x; 

    document.write(t('how fun ')+'<br>'); // how fun how fun 
    var u=t // u 引用 函数 t 
    document.write(u('how fun too ')+'<br>'); // how fun too how fun too 
    //]]> 
    </script>

    31.9 在对象中存储函数, 并引用 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var o=new Object(); 
    o.t=function(x){x+=''; return x+x;} 
    var t=o.t('test this '); 
    document.write(t); 
    //]]> 
    </script>

    31.10 在数组中存储函数, 并引用 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var a=new Array(3); 
    a[0]=function(x){x+='';return x+x}; 
    a[1]='test this '; 
    a[2]=a[0](a[1]); 
    document.write(a[2]); 
    //]]> 
    </script>

    31.11 function.call() 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var o=new Object(); 
    function f(a, b){ 
    return a+b 

    document.write(f.call(o, 1, 2)); 
    //]]> 
    </script>

    31.12 在函数内定义的变量能够被下级内嵌函数调用 
    <script type="text/javascript"> 
    //<![CDATA[ 
    function t(){ 
    var x=" this's test "; 
    function u(){ 
    document.write(x.bold()); 

    u(); 

    t(); 
    //]]> 
    </script>

    30. Date()

    30.1 输出年月日, 时分秒 的日期格式 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var $dt=new Date(); 
    document.write('yyyy-nn-dd: '+$dt.toLocaleDateString()+'<br/>'); 
    document.write('hh-mm-ss: '+$dt.toLocaleTimeString()); 
    //]]> 
    </script>

    29. isNaN 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var $str='this is string'; 
    var $num=12.3; 
    //alert(isNaN($str)); 
    alert(isNaN($num)); 
    //]]> 
    </script>

    28. new 语法 
    new Boolean(false) 
    new Number(0) 
    new String("") 
    new Array() 
    new Object() 
    new Date(); 
    new Error();

    27. RegExp

    27.1 普通操作 1 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var $str='this is a test' 
    with(document){ 
    write('test str is: '+$str+'<br/>'); 
    write('$str.search(/is a/i): '+$str.search(/is a/i)+'<p/>');

    write('$str.replace(/ {1,1}/ig,"--"): '+$str.replace(/ {1,1}/ig,"--")+'<p/>');

    write('$str.match(/t[/S]{1,3}/ig): '+$str.match(/t[/S]{1,3}/ig)+'<p/>');

    var $temp=$str.match(/(t[/S]{1,3})/ig) 
    for ($i=0; $i<$temp.length; $i++){ 
    write($temp[$i]+'<br/>'); 


    //]]> 
    </script>

    27.2 test 语句 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var $pattern=/this/i; 
    alert($pattern.test('this is a test')); 
    //]]> 
    </script>

    27.3 exec 语句 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var $pattern=/this/ig; 
    var $str='this is a test, this is repeat'; 
    var $result; 
    while(($result=$pattern.exec($str))!=null){ 
    alert($result[0]+'>>> index of str: '+$result.index+' $pattern lastIndex: 
    '+$pattern.lastIndex); 

    //]]> 
    </script>

    26. Array()

    26.0 简单创建数组, 并赋值 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var ar=new Array(); 
    for(var i=0; i<10; i++){ 
    ar[i]='array '+i 
    document.write(ar[i]+'<br/>'); 

    //]]> 
    </script>

    26.0.1 简单创建数组, 并赋值 2 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var ar=['v1', 'v2', 'v3', 'v4', 'v5'] 
    for(var i=0; i<ar.length; i++){ 
    document.write(ar[i]+'<br/>'); 

    //]]> 
    </script>

    26.0.2 简单创建数组 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var ar=new Array(10); 
    document.write(ar.length); 
    //]]> 
    </script>

    26.0.3 创建数组中的数组 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var ar=new Array('v1', 'v2', 'v3', ['v41', 'v42']); 
    for(var i=0; i<ar.length; i++){ 
    document.write(ar[i].toString()+'<br/>'); 

    //]]> 
    </script>

    26.0.4 创建数组中的对象 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var ar=new Array('v1', 'v2', 'v3', {x:'v41', y:'v42'}); 
    for(var i=0; i<ar.length; i++){ 
    if(typeof(ar[i])=='string') 
    document.write(ar[i]+'<br/>'); 
    else if(typeof(ar[i])=='object'){ 
    document.write('object<br/>'); 
    for(var j in ar[i]){ 
    document.write('obj: '+j+' obj val '+ar[i][j]+'<br/>'); 



    //]]> 
    </script>

    26.1 [array].push(), [array].pop() 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var $array=new Array('a', 'b', 'c', 'd', 'e')

    with(document){ 
    write('source $array.join: '+$array.join()+'<br/>'); 
    write ($array.length+'<br/>'); 
    $array.push(1,1,1,1,1,1,1,1,1,1); 
    write ('$array.push(1,1,1,1,1,1,1,1,1,1), $array.length: 
    '+$array.length+'<br/>'); 
    write('join $array: '+$array.join()+'<p/>');

    write ($array.length+'<br/>'); 
    $array.push(1, 2, 3, 4, 5); 
    write ('$array.push(1, 2, 3, 4, 5), $array.length: '+$array.length+'<br/>'); 
    write('join $array: '+$array.join()+'<p/>');

    write('$array.pop(): '+$array.pop()+'<br/>'); 
    write('$array.length & $array.join(): '+$array.length+' '+$array.join()+'<p/>');


    write('$array.pop(10): '+$array.pop(10)+'<br/>'); 
    write('$array.length & $array.join(): '+$array.length+' 
    '+$array.join()+'<br/>'); 

    //]]> 
    </script>

    26.2 数组排序 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var a=new Array(); 
    for (var i=0, j=1; i<10;a[i]=j, i++, j++);

    document.write('<h2>未排序前:</h2>'); 
    document.write(a.join());

    document.write('<h2>无条件排序:</h2>'); 
    document.write(a.sort().join());

    temp=a.sort(function(a, b){return a-b}); 
    document.write('<h2>a-b 排序:</h2>'); 
    document.write(temp.join());

    temp=a.sort(function(a, b){return b-a}); 
    document.write('<h2>b-a 排序:</h2>'); 
    document.write(temp.join()); 
    //]]> 
    </script>

    26.3 创建数组指定维数, 从 1 開始. 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var a=new Array(3); 
    document.write((a.length+'').bold()+'<br/>'); 
    for(var i=0; i<a.length; i++){ 
    document.write(i+'<br/>'); 

    //]]> 
    </script>

    25. toString

    25.1 使用 toString 列出数组中的元素 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var $array=new Array('a', 'a1', 'a2'); 
    alert($array.toString()); 
    //]]> 
    </script>

    24. object

    24.1 创建简单对象 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var $obj=new Object(); 
    $obj={$title:"object example", $date:Date()} 
    alert($obj.$date); 
    //]]> 
    </script>

    24.1.1 创建简单对象 一 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var cnt=new Object(); 
    cnt.title='title this'; 
    cnt.content='content this' 
    cnt.date='the publishing date of '+Date();

    document.write('title: '+cnt.title+'<br/>cnt.content: 
    '+cnt.content+'<br/>cnt.date: '+cnt.date); 
    //]]> 
    </script>

    24.1.2 创建简单对象 二 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var cnt={ 
    title:'title this', 
    content:'content this', 
    date:'the publishing date of '+Date() 

    document.write('title: '+cnt.title+'<br/>cnt.content: 
    '+cnt.content+'<br/>cnt.date: '+cnt.date); 
    //]]> 
    </script>

    24.2 创建嵌套对象 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var cnt={ 
    title:{ 
    headertitle:'header title', 
    subtitle:'subtitle this' 
    }, 
    content:'content this', 
    date:'the publishing date of '+new Date().toLocaleString() 

    document.write('title: '+cnt.title.headertitle.bold().fontcolor('red')+ 
    '<br/>cnt.title.subtitle: '+cnt.title.subtitle.fontcolor('blue')+ 
    '<br/>cnt.content: '+cnt.content.fontcolor('goldenrod')+ 
    '<br/>cnt.date: '+cnt.date); 
    //]]> 
    </script>

    24.2.1 创建嵌套对象 1 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var o=new Object(); 
    o.title=' this title '; 
    o.content=' this content'; 
    o.lve=new Object(); 
    o.lve.title=' this o.lve title'; 
    o.lve.content=' this o.lve content';

    document.write('o.title: '+o.title.bold()+'<br/>'); 
    document.write('o.content: '+o.content.bold()+'<br/>'); 
    document.write('o.lve.title: '+o.lve.title.bold()+'<br/>'); 
    document.write('o.lve.content: '+o.lve.content.bold()+'<br/>'); 
    //]]> 
    </script>

    24.3 删除对象中的属性 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var $obj=new Object(); 
    $obj={$title:"object example", $date:Date()} 
    //alert($obj.$date);

    var $name=""; 
    for(name in $obj)$name+=name+'/n'; 
    alert($name);

    delete $obj.$date

    var $name=""; 
    for(name in $obj)$name+=name+'/n'; 
    alert($name); 
    //]]> 
    </script>

    24.4 遍历对象中的属性名 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var $obj=new Object(); 
    $obj={$title:"object example", $date:Date()} 
    //alert($obj.$date);

    var $name=""; 
    for(name in $obj)$name+=name+'/n'; 
    alert($name); 
    //]]> 
    </script>

    24.4.1 遍历对象中的属性名 1 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var o=new Object(); 
    o.title=' this title '; 
    o.content=' this content'; 
    o.lve=new Object(); 
    o.lve.title=' this o.lve title'; 
    o.lve.content=' this o.lve content';

    for (var i in o){ 
    if(typeof o[i]!=='object'){ 
    document.write('object o, element: '+i.fontcolor('red')+' value: 
    '+o[i].bold()+'<br/>'); 
    } else { 
    document.write('object '+i+' element<br/>'); 
    for(var j in o[i]){ 
    document.write('subobject element :'+j.fontcolor('red')+ 
    ' subobject value: '+o[i][j].bold()+'<br/>'); 



    //]]> 
    </script>

    24.5 obj.propertyIsEnumerable('ele') 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var d=new Date(); 
    d.x='test'; 
    var s=new String(); 
    var o=new Object(); 
    var f=new Function('thest')

    document.write(d.propertyIsEnumerable('x')); 
    document.write(d.propertyIsEnumerable('y')); 
    //]]> 
    </script>

    24.6 obj.hasOwnProperty('ele') 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var d=new Date(); 
    d.x='test'; 
    var s=new String(); 
    var o=new Object(); 
    var f=new Function('thest')

    document.write(d.hasOwnProperty('x')); 
    document.write(d.hasOwnProperty('y')); 
    //]]> 
    </script>

    23. call, apply

    23.1 apply

    23.1.1 找出数组中最大的数 
    <script type="text/javascript"> 
    //<![CDATA[ 
    $array=new Array(2, 9, 12, 33, 2, 4444, 22) 
    var $temp=Math.max.apply(null, $array) 
    alert($temp) 
    //]] 
    </script>

    22. break, continue

    22.1 continue 
    <script type="text/javascript"> 
    //<![CDATA[ 
    for (var $i=0; $i<10; $i++){ 
    if($i==5){continue;} 
    document.write ($i+'<br/>') 

    //]]> 
    </script>

    22.2 break

    22.2.1 break 标签 
    <script type="text/javascript"> 
    //<![CDATA[ 
    //document.write('<xmp>'); 
    outerloop: 
    for (var i=0; i<10; i++){ 
    document.writeln(('outerloop:'+i).bold()+'<br/>') 
    innerloop: 
    for(var j=0; j<10; j++){; 
    if(i==5)break outerloop; 
    if(j==9)break innerloop; 
    document.writeln(('innerloop: '+j).fontcolor('blue')+'<br/>'); 


    //document.write('</xmp>'); 
    //]]> 
    </script>

    21. with

    21.1 简单 with 
    <script type="text/javascript"> 
    //<![CDATA[ 
    with(document){ 
    write('ok'); 

    //]]> 
    </script>

    21.1 简单with (还有一写法) 
    var $dw=document 
    $dw.write('ok this a test');

    20. try, catch, finally

    20.1 简单 try, catch 
    try{ 
    5*kkk 

    catch(e){ 
    alert(e) 
    }

    20.1.1 简单 try, catch 1 
    <script type="text/javascript"> 
    //<![CDATA[ 
    document.write('<h2>window object:</h2>'); 
    for(var i in window){ 
    try{ 
    document.write(i.bold()+' '+(window[i]+'').fontcolor('blue')+'<br/>'); 
    } catch (e) { 
    document.write(i.fontcolor('red').bold()+': '); 
    document.write(e.description.fontcolor('red')+'<br/>'); 


    //]]> 
    </script>

    19. for in

    19.1 简单 for in 
    <script type="text/javascript"> 
    //<![CDATA[ 
    /* document.write('<h2>top object:</h2>'); 
    for(var i in top){ 
    try{ 
    document.write(i.bold()+' '+(top[i]+'').fontcolor('blue')+'<br/>'); 
    } catch (e) { 
    document.write(i.fontcolor('red').bold()+': '); 
    document.write(e.description.fontcolor('red')+'<br/>'); 

    }

    document.write('<h2>parent object:</h2>'); 
    for(var i in parent){ 
    try{ 
    document.write(i.bold()+' '+(parent[i]+'').fontcolor('blue')+'<br/>'); 
    } catch (e) { 
    document.write(i.fontcolor('red').bold()+': '); 
    document.write(e.description.fontcolor('red')+'<br/>'); 

    }

    document.write('<h2>screen object:</h2>'); 
    for(var i in screen){ 
    try{ 
    document.write(i.bold()+' '+(screen[i]+'').fontcolor('blue')+'<br/>'); 
    } catch (e) { 
    document.write(i.fontcolor('red').bold()+': '); 
    document.write(e.description.fontcolor('red')+'<br/>'); 


    */ 
    try{ 
    document.write('<h2>clipboardData object:</h2>'); 
    for(var i in clipboardData){ 
    try{ 
    document.write(i.bold()+' '+(clipboardData[i]+'').fontcolor('blue')+'<br/>'); 
    } catch (e) { 
    document.write(i.fontcolor('red').bold()+': '); 
    document.write(e.description.fontcolor('red')+'<br/>'); 


    } catch(ex) { 
    document.write((ex+'').fontcolor('red')); 
    }

    document.write('<h2>window object:</h2>'); 
    for(var i in window){ 
    try{ 
    document.write(i.bold()+' '+(window[i]+'').fontcolor('blue')+'<br/>'); 
    } catch (e) { 
    document.write(i.fontcolor('red').bold()+': '); 
    document.write(e.description.fontcolor('red')+'<br/>'); 


    /* 
    document.write('<h2>Option object:</h2>'); 
    for(var i in Option){ 
    try{ 
    document.write(i.bold()+' '+(Option[i]+'').fontcolor('blue')+'<br/>'); 
    } catch (e) { 
    document.write(i.fontcolor('red').bold()+': '); 
    document.write(e.description.fontcolor('red')+'<br/>'); 


    */ 
    document.write('<h2>frames object:</h2>'); 
    for(var i in frames){ 
    try{ 
    document.write(i.bold()+' '+(frames[i]+'').fontcolor('blue')+'<br/>'); 
    } catch (e) { 
    document.write(i.fontcolor('red').bold()+': '); 
    document.write(e.description.fontcolor('red')+'<br/>'); 


    /* 
    document.write('<h2>self object:</h2>'); 
    for(var i in self){ 
    try{ 
    document.write(i.bold()+' '+(self[i]+'').fontcolor('blue')+'<br/>'); 
    } catch (e) { 
    document.write(i.fontcolor('red').bold()+': '); 
    document.write(e.description.fontcolor('red')+'<br/>'); 


    */ 
    document.write('<h2>document object:</h2>'); 
    for(var i in document){ 
    document.write(i.bold()+' '+(document[i]+'').fontcolor('blue')+'<br/>'); 
    }

    document.write('<h2>history object:</h2>'); 
    for(var i in history){ 
    try{ 
    document.write(i.bold()+' '+(history[i]+'').fontcolor('blue')+'<br/>'); 
    } catch (e) { 
    document.write(i.fontcolor('red').bold()+': '); 
    document.write(e.description.fontcolor('red')+'<br/>'); 


    /* 
    document.write('<h2>Image object:</h2>'); 
    for(var i in Image){ 
    try{ 
    document.write(i.bold()+' '+(Image[i]+'').fontcolor('blue')+'<br/>'); 
    } catch (e) { 
    document.write(i.fontcolor('red').bold()+': '); 
    document.write(e.description.fontcolor('red')+'<br/>'); 


    */ 
    document.write('<h2>navigator object:</h2>'); 
    for(var i in navigator){ 
    try{ 
    document.write(i.bold()+' '+(navigator[i]+'').fontcolor('blue')+'<br/>'); 
    } catch (e) { 
    document.write(i.fontcolor('red').bold()+': '); 
    document.write(e.description.fontcolor('red')+'<br/>'); 

    }

    document.write('<h2>location object:</h2>'); 
    for(var i in location){ 
    document.write(i.bold()+' '+(location[i]+'').fontcolor('blue')+'<br/>'); 

    //]]> 
    </script>

    19.1.1 简单 for in 1 
    for (var $i in window){ 
    document.write($i+'<br/>'); 
    }

    19.2 for in 赋值 [数组] 
    var $array=new Array(); 
    var i=0; 
    for ($array[i++] in window){ 
    //document.write($i+'<br/>'); 

    alert($array[0]);

    19.2.1 for in 赋值 [数组] 1 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var o={a:'aaa', b:'bbb', c:'ccc'}; 
    var a=new Array(); 
    var i=0; 
    for(a[i++] in o)document.write(a[i-1]); 
    //for(i in a)document.write(a[i]); 
    //]]> 
    </script>

    18. for

    18.1 简单 for 
    for (var $i=0; $i<10; $i++) { 
    document.write($i) 
    }

    18.2 简单 for 1 
    for (var $i=0, $j=10; $i<10; $i++, $j--) { 
    document.write(($i*$j)+'<br/>') 
    }

    18.3 循环列出从 a - z 的字母 
    <script type="text/javascript"> 
    //<![CDATA[ 
    for(var $i='a'.charCodeAt(); $i<='z'.charCodeAt(); $i++){ 
    document.write(String.fromCharCode($i)+'<br/>') 

    //]]> 
    </script>

    18.3 n阶乘 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var $fN=10 
    for (var $i=1, $j=1; $i<=$fN; $i++, $j*=$i){ 
    if($i==$fN){document.write($j);} 

    //]]> 
    </script>

    18.4 Fibonacci Numbers 
    <script type="text/javascript"> 
    //<![CDATA[ 
    for(var $i=0, $j=1, $k=0, $fbcc=0; $i<50; $i++){ 
    document.write($i+'='+$fbcc+'<br/>'); 
    $fbcc=$j+$k; 
    $j=$k; 
    $k=$fbcc; 

    //]]> 
    </script>

    17. do while

    17.1 简单 do while 
    var $count=0 
    do{ 
    document.write($count) 
    } while(++$count<10)

    17.1.2 简单 do while 
    var $count=1 
    do{ 
    document.write($count) 
    } while($count++<10)

    16. while

    16. 简单 while 
    var $count=0 
    while($count<10){ document.write($count);$count++;}

    15 if 推断

    15.1 简单 if 推断 
    function ubbTag(fId, str){ 
    document.getElementById(fId).content.focus(); 
    var strEnd=str.replace(//[/ig,'[/') 
    if (strEnd.indexOf('=')>-1){ strEnd=strEnd.replace(/(.*?

    )/=.*?

    /]/,'$1]') } 
    if((document.selection)&&(document.selection.type== "Text")){ 
    var oStr=document.selection.createRange(); 
    oStr.text=str+oStr.text+strEnd 
    } else { 
    document.getElementById(fId).content.value+=str+strEnd 

    }

    15.1.1 简单 if 推断 2 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var i=0, j=1; 
    i>j?

    j+=i:i+=j; 
    document.write(i+' '+j); 
    //]]> 
    </script>

    15.1.2 简单 if 推断 3 
    <script type="text/javascript"> 
    //<![CDATA[ 
    if(!cdti||cdti=='')var cdti='test this'; 
    document.write(cdti); 
    //]]> 
    </script>

    15.2 if 推断的 三个 写法 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var a=b=5, c=6 
    if(a==b)document.write('a equal b <br/>'); 
    (a==b)&&document.write('a equal b <br/>'); 
    a==b?document.write('a equal b <br/>'):''; 
    //]]> 
    </script>

    15.3 推断运行文件使用网络还是使用本地协议 
    <script type="text/javascript"> 
    //<![CDATA[ 
    if(location.protocol=='file:'){ 
    alert('local') 
    } else alert('internet'); 
    //]]> 
    </script>

    15.4 if...else 写法 
    <script type="text/javascript"> 
    //<![CDATA[ 
    //var i=0 
    var i=1 
    if(i==0)document.write('i=0'); 
    else document.write('i!=0'); 
    //]]> 
    </script>

    14. switch

    14.1 简单 switch 
    /* switch(strEnd){ 
    case '/[//html]' :strEnd=strEnd.replace(///[//,'HTML 和 JS 代码支持[');break; 
    case '/[//code]' :strEnd=strEnd.replace(///[//,'代码[');break; 
    case '/[//quote]' :strEnd=strEnd.replace(///[//,'引用[');break; 
    case '/[//cite]' :strEnd=strEnd.replace(///[//,'引用[');break; 
    case '/[//linenum]' :strEnd=strEnd.replace(///[//,'显示行号[');break; 
    case '/[//b]' :strEnd=strEnd.replace(///[//,'粗体[');break; 
    case '/[//i]' :strEnd=strEnd.replace(///[//,'叙体[');break; 
    case '/[//u]' :strEnd=strEnd.replace(///[//,'下划线[');break; 
    case '/[//flash]' :strEnd=strEnd.replace(///[//,'Flash 动画[');break; 
    case '/[//sound]' :strEnd=strEnd.replace(///[//,'背景声音[');break; 
    case '/[//mms]' :strEnd=strEnd.replace(///[//,'WM格式流数据[');break; 
    case '/[//rtsp]' :strEnd=strEnd.replace(///[//,'Real格式流数据[');break; 
    case '/[//ra]' :strEnd=strEnd.replace(///[//,'在线Real Player播放音频文件[');break; 
    case '/[//real]' :strEnd=strEnd.replace(///[//,'Real Player 播放视频文件[');break; 
    case '/[//wm]' :strEnd=strEnd.replace(///[//,'在线Windows Media 
    Player播放视频文件[');break; 
    case '/[//wma]' :strEnd=strEnd.replace(///[//,'在线Windows Media 
    Player播放音频文件[');break; 
    case '/[//iframe]' :strEnd=strEnd.replace(///[//,'插入网页[');break; 
    } */

    13. 时间操作

    13.1 以毫秒为单位的倒计时跳转, 来源 CSDN 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var go=20000; 
    var timer=null; 
    var endTime = new Date().getTime() + go ; 
    function interval() 

    var n=(endTime-new Date().getTime())/1000; 
    if(n<0) return; 
    document.getElementById("jumpTo").innerHTML = n.toFixed(3); 
    setTimeout(interval, 10); 

    window.onload=function(){ 
    timer=setTimeout("window.location.href='/'", go); 
    interval(); 

    //]]> 
    </script> 
    <span id="jumpTo">20.000</span> 秒后 将自己主动</span>跳转到

    12. 随机数

    12.1 生成 GUID 
    <!--start 12.1--> 
    <html> 
    <!-- DW6 --> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <title>Untitled Document</title> 
    <script> 
    function fGuid() 

    var g =""; 
    for(var i = 0; i < 32; i++) 
    g += Math.floor(Math.random() * 0xF).toString(0xF) + (i == 8 || i == 12 || i == 
    16 || i == 20 ?

    "-" : ""); 
    alert(g.toUpperCase()); 

    </script> 
    </head> 
    <body onLoad="fGuid();"> 
    </body> 
    </html> 
    <!--end 12.1-->

    12.1.1 生成 GUID 2 
    <!--start 12.1.1 --> 
    <html> 
    <!-- DW6 --> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <title>Untitled Document</title> 
    <script> 
    function fGuid() { 
    var g =""; 
    for(var i = 0; i < 32; i++) 
    g += Math.floor(Math.random() * 0xF).toString(0xF) + (i == 8 || i == 12 || i == 
    16 || i == 20 ?

    "-" : ""); 
    //alert(g.toUpperCase()); 
    return g.toUpperCase(); 

    </script> 
    </head> 
    <body> 
    <form name="form1" method="post" action=""> 
    <input name="textfield" type="text" onMouseMove="this.value=fGuid();" size="50">

    </form> 
    </body> 
    </html> 
    <!--end 12.1.1 -->

    11.1 检測字符串中是否出现某字符 
    <script> 
    function test(str) { 
    if(str.indexOf("|")>0) { 
    alert("have |") 


    </script> 
    <input type="text" value="kklskldflksd|ksdkfksjd" onMouseOver="test(this.value)" 
    />

    11. 字符串

    10.2 鼠标移过选择表单项 
    onMouseOver="focus();select();"

    10.1 单击鼠标右击关闭窗体 (我用左手) 
    <html onmousedown='window.close();'>

    10. 接收鼠标事件

    9. 正則表達式 
    function rbr() { 
    re=//<br///>*/ig 
    document.all.textarea.value=document.all.textarea.value.replace(re,"") 
    }

    8. 顯示頁面全部元素 
    <script language="JavaScript" type="text/javascript"> 
    //<![CDATA[ 
    for(var i in document) { 
    document.write(i +"="+ document[i]+"<br/>") 

    //]]> 
    </script>

    7. 文本框回车链接 
    <script> 
    <!-- 
    function ckKeyPress(jumpto){ 
    if(window.event.keyCode==13) { 
    window.location.href="?"+jumpto 


    //-->shawl.qiu script 
    </script> 
    转到:<input type='text' onmousemove='this.focus();this.select();' 
    onkeypress="ckKeyPress(this.value);" />

    6. IE 全屏显示 
    <script language="JavaScript"> 
    <!-- 
    self.moveTo(0,0) 
    self.resizeTo(screen.availWidth,screen.availHeight) 
    //--> 
    </script>

    5. 双击拷贝文本 
    <script LANGUAGE="JAVASCRIPT"> 
    function ClipBoard(tdObj) { //IE Only 
    var holdtext = document.all['holdtext']; 
    holdtext.innerText = tdObj.innerText; 
    Copied = holdtext.createTextRange(); 
    Copied.execCommand("Copy"); 
    alert("text copied"); 

    </script> 
    <form NAME="form1" METHOD="post" ACTION=""> 
    <textarea id="holdtext" style="display:none" ROWS="10"></textarea> 
    </form>

    4. 控制图片大小 
    <img src="images/teach/opera/01.jpg" 
    onload="javascript:if(this.width>500)this.width=500;" > 
    //假设图片宽度大于 500px, 则 更改宽度为 500px

    3.1 Javascript 结合 Asp 使用数组 
    <% '连接数据库 
    set rs=server.CreateObject("adodb.recordset") '创建 rs 数据查询 
    rs.open "Select a.*, b.* FROM ctglossarysubcat AS a INNER JOIN 
    ctglossarysupercat AS b ON a.gcid = b.gcid order by a.gcid",MM_conn_string,1 
    %> 
    <script LANGUAGE="JAVASCRIPT"> 
    var onecount; //定义子类计数 
    onecount=0; //设置子类计数默认值为0 
    subcat = new Array(); //定义显示子类数组 
    <% count = 0 
    do while not rs.eof %> 
    subcat[<%=count%>] = new 
    Array("<%=rs("gscat")%>","<%=rs("a.gcid")%>","<%=rs("gscid")%>"); 
    <% count = count + 1 
    rs.movenext 
    loop 
    %> 
    onecount=<%=count%>; //子类条目总数 
    </script> 
    <% 
    rs.close '关闭 rs 连接 
    set rs=nothing 
    %>

    3. 数组/Array

    2.2 实时显示更改的图片链接 
    <input type="text" name="" value="<%response.write siteicon %>" 
    onkeyup="javascript:document.all.siteicon.src=(this.value);" /> <img 
    src="<%response.write siteicon %>" alt="<%response.write sitename %>" 
    id="siteicon" />

    2.1 按不论什么键关闭窗体 
    <body onKeyPress="self.close()">

    2. 接收键盘事件

    1.6 鼠标经过自己主动提交表单 
    onMouseOut="submit()"

    1.5.1 鼠标经过时选中,并隐藏原框的文字。 移开再显示文字 ——文本框 
    <input NAME="findtext" TYPE="text" ID="findtext" value="查找" 
    onMouseOver="this.focus();this.value=''" 
    onMouseOut="this.value='查找';this.select()"> 
    <!-- shawl.qiu script -->


    1.5 鼠标经过时选中 ——复选框 Focus() 
    <input type="checkbox" onMouseOver="checked='true'" /> 
    <!-- shawl.qiu script -->

    1.4 Prompt 
    function prompter() 
    {

    urlLink=window.prompt("请输入链接"," http://") 
    text = window.prompt("链接名")

    if(text!="") 
    document.formT.content.value+=""+text+"" 
    }


    1.3 最原始也最有用的 UBB 代码输入方法——SCRIPT & FORM 
    <form name="formT" id="formT" method="post" action=""> 
    <input type="button" value="url" onclick="this.form.content.value+=''"/> 
    <input type="button" value="code" onclick="this.form.content.value+=' 
    CODE:'" />

    <input type="button" value="quote" onclick="this.form.content.value+=' 
    QUOTE:

    '"/> 
    <br /> 
    <textarea name="content" cols="60" rows="10"></textarea> 
    <br /> 
    <input type="submit" name="Submit" value="Submit" /> 
    <input type="reset" name="Reset" value="Reset" /> 
    </form> 
    <!-- shawl.qiu script -->

    1.2 确认button 
    <script LANGUAGE="JavaScript"> 
    <!--//确认框, 注意表单名; button属性, button名字不能为 submit 
    function confirmer() 

    if (confirm("如今提交?")) { 
    document.formT.submit() 

    else { 
    document.formT.reset() 

    }gggg 
    //Script By Shawl.qiu 
    //--> 
    </script> 
    <form name="formT" method="post" action="t1.asp"> 
    <input type="text" name="textfield" value="确认后提交"> 
    <input type="button" name="confbuton" value="提交" onclick="confirmer();"> 
    </form>


    1.1 前进后退button 
    <input TYPE="button" VALUE="后退" ONCLICK="history.back(-1)"> 
    <input TYPE="button" VALUE="前进" ONCLICK="history.back(+1)">

    1. button

    0. 语法

    0.1 Switch 
    function kP() { 
    switch(event.keyCode) { 
    case 27: //按 ESC 键关闭窗体. 
    window.close() 
    break; 
    //case 120: //F9 转到主页 
    //window.location.href="/" 
    //break; 
    default: 
    break; 

    }

    -1. 运算符

    -1.1 -- 与 ++ 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var x; 
    x=0; 
    document.write('x=0, x++: '+(x++)); // 运行 x 后, x 再加 1 
    x=0; 
    document.write('<br/>x=0, ++x: '+(++x)); // 运行 x 前, x 先加 1 
    x=2; 
    document.write('<br/>x=2, x--: '+(x--)); // 运行 x 后, x 再减 1 
    x=2; 
    document.write('<br/>x=2, --x: '+(--x)); // 运行 x 前, x 先减 1 
    //]]> 
    </script>

    -1.1.1 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var i=1; 
    j=++i; 
    document.write(i); //2 
    document.write('<br/>'); 
    document.write(j); //2 
    document.write('<br/>');

    var k=1 
    l=k++ 
    document.write(k); //2 
    document.write('<br/>'); 
    document.write(l); //1 
    //]]> 
    </script>

    -1.2 类型转换 
    <script type="text/javascript"> 
    //<![CDATA[ 
    document.write('100'+100); //'100100' 字符串与数字相加 
    document.write('<br/>'); 
    document.write('100'-0); //100 转字符串为数值 
    document.write('<br/>'); 
    document.write(100+''); //'100' 数值转字符串 
    document.write('<br/>'); 
    document.write(!!100); //true 转布尔值 
    document.write('<br/>'); 
    document.write(!100); //false 转布尔值 
    document.write('<br/>'); 
    //]]> 
    </script>

    -1.3 0/0=?

     
    <script type="text/javascript"> 
    //<![CDATA[ 
    document.write(0/0); //NaN 
    //]]> 
    </script>

    -1.4 == 与 ===

    -1.4.1 NaN 
    <script type="text/javascript"> 
    //<![CDATA[ 
    document.write(NaN==NaN); //false 
    document.write(NaN===NaN); //false 
    //]]> 
    </script>

    -1.4.2 true 等价 1, false 等价 0. 
    <script type="text/javascript"> 
    //<![CDATA[ 
    document.write(1==true); //true 
    document.write('<br/>'); 
    document.write(0==false); //true 
    document.write('<br/>'); 
    //]]> 
    </script>

    -1.5 in 操作符 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var o={e:'ok', f:'ok'} 
    document.write('e' in o); // true 
    document.write('<br/>'); 
    document.write('f' in o); // true 
    document.write('<br/>'); 
    document.write('j' in o); // false 
    document.write('<br/>'); 
    document.write('toString' in o); // false 
    document.write('<br/>'); 
    //]]> 
    </script>

    -2. var 定义变量

    -2.1 普通定义变量 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var i 
    document.write(i+'<br/>'); 
    var j=1, k=2 
    document.write(j+k+'<br/>'); 
    for(var l=0; l<10; l++)document.write(l+' ');; 
    //]]> 
    </script>

    -2.1.1 普通定义变量 1 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var o={a:'aaa', b:'bbb', c:'ccc'} 
    for(var i in o){ 
    document.write('object element name: '+i.bold()+' object value: 
    '+o[i].fontcolor('blue')+'<br/>'); 

    //]]> 
    </script>

    -2.1.2 普通定义变量 2 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var i=j=k=l='ok'; 
    document.write(i.bold()+'<br/>'); 
    document.write(j.bold()+'<br/>'); 
    document.write(k.bold()+'<br/>'); 
    document.write(l.bold()+'<br/>'); 
    //]]> 
    </script>

    -2.2 全局变量与局部变量 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var i='global i';//全局 
    function t(){ 
    var i='local i'; //局部 
    document.write(i+'<br/>'); 
    j='global j' //全局 
    document.write(j+'<br/>'); 

    document.write(i+'<br/>'); 
    t(); 
    document.write(i+'<br/>'); 
    document.write(j+'<br/>');

    var k='global k' 
    document.write(k+'<br/>'); 
    function t1(){ 
    k='change global k' 
    document.write(k+'<br/>'); 

    t1(); 
    document.write(k+'<br/>'); 
    //]]> 
    </script>

    -2.3 在函数中使用 var 定义一个变量, 该变量将影响整个函数, 不分先后. 
    var scope = "global"; 
    function f( ) { 
    alert(scope); // Displays "undefined", not "global" 
    var scope = "local"; // Variable initialized here, but defined everywhere 
    alert(scope); // Displays "local" 

    f( );

    -2.4 同一时候初始化多个变量并赋同样值 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var i=j=k=l=0; 
    document.write(i+' '+j+' '+k+' '+l+' '); 
    //]]> 
    </script>

    -3. 优先级

    -3.1 函数比其它代码优先运行 
    <script type="text/javascript"> 
    //<![CDATA[ 
    document.write((t(10)+'').bold()+'<br/>'); 
    t=10; 
    document.write((t+'').bold()+'<br/>'); 
    function t(n){ 
    return n*n; 

    //]]> 
    </script>

    ---/---------------------------------------------------------

    经常使用參数

    3. document

    2. location

    1. this

    ---------------------------------

    3.3 写出字符串 
    document.write("<input type='button' value='url' 
    onclick='addcontent('','');'/>");

    3.2 document.from 
    指定 表单域

    3.1 document.all.id 
    查找指定 HTML 页面 ID 或 名字

    3. document

    2.2 转到特定网页 
    onClick="location.href=' http://127.0.0.1/'"

    2.1 单独 location 
    取页面地址

    2. location

    1.4 this.height 
    取高度属性

    1.3 this.width 
    取宽度属性

    1.2 this.href 
    取链接地址

    1.1 this.src 
    取图片地址

    1. this

    ---/---------------------------------------------------------

    问题集:

    3. return 返回多个值 2006-10-14 14:13:18

    2. 理解 setInternal 使用方法

    1. 理解 void 使用方法

    ---/---------------------------------------------------------

    相关摘要:

    24. Keep in mind that the function statement is available in all versions of 
    JavaScript, the Function( ) constructor is available only in JavaScript 1.1 and 
    later, and function literals are available only in JavaScript 1.2 and later. 
    Recall that we said the three functions defined earlier are "more or less" 
    equivalent -- there are some differences between these three techniques for 
    function definition, which we'll consider in Section 11.5.

    //JavaScript: The Definitive Guide, 4th Edition -- 7.1.3 Function Literals 
    2006-10-19 14:35:56

    23. The Function( ) constructor expects any number of string arguments. The last 
    argument is the body of the function -- it can contain arbitrary JavaScript 
    statements, separated from each other by semicolons. All other arguments to the 
    constructor are strings that specify the names of the parameters to the function 
    being defined. If you are defining a function that takes no arguments, you 
    simply pass a single string -- the function body -- to the constructor.

    //JavaScript: The Definitive Guide, 4th Edition -- 7.1.2 The Function( ) 
    Constructor 
    2006-10-19 14:16:18

    22. Note that ECMAScript v3 does not allow function definitions to appear 
    anywhere; they are still restricted to top-level global code and top-level 
    function code. This means that function definitions may not appear within loops 
    or conditionals, for example.[1] These restrictions on function definitions 
    apply only to function declarations with the function statement. As we'll 
    discuss later in this chapter, function literals (another feature introduced in 
    JavaScript 1.2 and standardized by ECMAScript v3) may appear within any 
    JavaScript e­xpression, which means that they can appear within if and other 
    statements.

    //JavaScript: The Definitive Guide, 4th Edition -- 7.1 Defining and Invoking 
    Functions 
    2006-10-19 14:10:13

    21. try and finally can be used together without a catch clause. In this case, 
    the finally block is simply cleanup code that is guaranteed to be executed, 
    regardless of any break, continue, or return statements within the try clause. 
    For example, the following code uses a try/finally statement to ensure that a 
    loop counter variable is incremented at the end of each iteration, even when an 
    iteration terminates abruptly because of a continue statement:

    //JavaScript: The Definitive Guide, 4th Edition -- 6.17 try/catch/finally 
    2006-10-18 19:18:08

    20. The continue statement, in both its labeled and unlabeled forms, can be used 
    only within the body of a while, do/while, for, or for/in loop. Using it 
    anywhere else causes a syntax error.

    //JavaScript: The Definitive Guide, 4th Edition -- 6.12 continue 
    2006-10-18 16:03:46

    19. The following rules are used to determine whether two values are identical 
    according to the === operator:

    If the two values have different types, they are not identical.

    If both values are numbers and have the same value, they are identical, unless 
    either or both values are NaN, in which case they are not identical. The NaN 
    value is never identical to any other value, including itself! To check whether 
    a value is NaN, use the global isNaN( ) function.

    If both values are strings and contain exactly the same characters in the same 
    positions, they are identical. If the strings differ in length or content, they 
    are not identical. Note that in some cases, the Unicode standard allows more 
    than one way to encode the same string. For efficiency, however, JavaScript 
    string comparison compares strictly on a character-by-character basis, and it 
    assumes that all strings have been converted to a "normalized form" before they 
    are compared. See the "String.localeCompare( )" reference page in the core 
    reference section of this book for another way to compare strings.

    If both values are the boolean value true or both are the boolean value false, 
    they are identical.

    If both values refer to the same object, array, or function, they are identical. 
    If they refer to different objects (or arrays or functions) they are not 
    identical, even if both objects have identical properties or both arrays have 
    identical elements.

    If both values are null or both values are undefined, they are identical.

    The following rules are used to determine whether two values are equal according 
    to the == operator:

    If the two values have the same type, test them for identity. If the values are 
    identical, they are equal; if they are not identical, they are not equal.

    If the two values do not have the same type, they may still be equal. Use the 
    following rules and type conversions to check for equality:

    If one value is null and the other is undefined, they are equal.

    If one value is a number and the other is a string, convert the string to a 
    number and try the comparison again, using the converted value.

    If either value is true, convert it to 1 and try the comparison again. If either 
    value is false, convert it to 0 and try the comparison again.

    If one value is an object and the other is a number or string, convert the 
    object to a primitive and try the comparison again. An object is converted to a 
    primitive value by either its toString( ) method or its valueOf( ) method. The 
    built-in classes of core JavaScript attempt valueOf( ) conversion before 
    toString( ) conversion, except for the Date class, which performs toString( ) 
    conversion. Objects that are not part of core JavaScript may convert themselves 
    to primitive values in an implementation-defined way.

    Any other combinations of values are not equal.

    As an example of testing for equality, consider the comparison: 
    "1" == true

    This e­xpression evaluates to true, indicating that these very different-looking 
    values are in fact equal. The boolean value true is first converted to the 
    number 1, and the comparison is done again. Next, the string "1" is converted to 
    the number 1. Since both numbers are now the same, the comparison returns true.

    When the equality operator in JavaScript 1.1 attempted to convert a string to a 
    number and failed, it displayed an error message noting that the string could 
    not be converted, instead of converting the string to NaN and returning false as 
    the result of the comparison. This bug has been fixed in JavaScript 1.2.

    //JavaScript: The Definitive Guide, 4th Edition -- 5.4 Equality Operators 
    2006-10-16 21:56:30

    18. In top-level code (i.e., JavaScript code that is not part of a function), 
    you can use the JavaScript keyword this to refer to the global object. Within 
    functions, this has a different use, which is described in Chapter 7.

    //JavaScript: The Definitive Guide, 4th Edition -- 4.6 Variables as Properties 
    2006-10-16 16:08:34

    17. Garbage collection is automatic and is invisible to the programmer. You can 
    create all the garbage objects you want, and the system will clean up after you! 
    You need to know only enough about garbage collection to trust that it works; 
    you don't have to wonder about where all the old objects go. For those who 
    aren't satisfied, however, Section 11.3, contains further details on the 
    JavaScript garbage-collection process.

    //JavaScript: The Definitive Guide, 4th Edition -- 4.5 Garbage Collection 
    2006-10-16 16:01:55

    16. Primitive Types and Reference Types 
    var a = [1,2,3]; // Initialize a variable to refer to an array 
    var b = a; // Copy that reference into a new variable 
    a[0] = 99; // Modify the array using the original reference 
    alert(b); // Display the changed array [99,2,3] using the new reference

    If this result does not seem surprising to you, you're already well familiar 
    with the distinction between primitive and reference types. If it does seem 
    surprising, take a closer look at the second line. Note that it is the reference 
    to the array value, not the array itself, that is being assigned in this 
    statement. After that second line of code, we still have only one array object; 
    we just happen to have two references to it.

    //JavaScript: The Definitive Guide, 4th Edition -- 4.4 Primitive Types and 
    Reference Types

    15. 在不论什么情况下,假设六个月以后您还能毫不费力地阅读和理解所编写的代码,则说明这些代码写得不错。

    //Windows 脚本技术 -- JScript -- 什么是 JScript? 
    2006-10-16 14:12:55

    14. The rule that all variables declared in a function are defined throughout 
    the function can cause surprising results. The following code illustrates this:

    var scope = "global"; 
    function f( ) { 
    alert(scope); // Displays "undefined", not "global" 
    var scope = "local"; // Variable initialized here, but defined everywhere 
    alert(scope); // Displays "local" 

    f( ); 
    //JavaScript: The Definitive Guide, 4th Edition -- 4.3 Variable Scope

    13. Variable Scope 
    The scope of a variable is the region of your program in which it is defined. A 
    global variable has global scope -- it is defined everywhere in your JavaScript 
    code. On the other hand, variables declared within a function are defined only 
    within the body of the function. They are local variables and have local scope. 
    Function parameters also count as local variables and are defined only within 
    the body of the function. 
    Within the body of a function, a local variable takes precedence over a global 
    variable with the same name. If you declare a local variable or function 
    parameter with the same name as a global variable, you effectively hide the 
    global variable. For example, the following code prints the word "local":

    var scope = "global"; // Declare a global variable 
    function checkscope( ) { 
    var scope = "local"; // Declare a local variable with the same name 
    document.write(scope); // Use the local variable, not the global one 

    checkscope( ); // Prints "local"

    //JavaScript: The Definitive Guide, 4th Edition -- 4.3 Variable Scope 
    2006-10-16 1:11:59

    12. In general, functions do not know what variables are defined in the global 
    scope or what they are being used for. Thus, if a function uses a global 
    variable instead of a local one, it runs the risk of changing a value upon which 
    some other part of the program relies. Fortunately, avoiding this problem is 
    simple: declare all variables with var

    //JavaScript: The Definitive Guide, 4th Edition -- 4.3 Variable Scope 
    2006-10-15 22:23:32

    11. If you attempt to read the value of an undeclared variable, JavaScript will 
    generate an error. If you assign a value to a variable that you have not 
    declared with var, JavaScript will implicitly declare that variable for you. 
    Note, however, that implicitly declared variables are always created as global 
    variables, even if they are used within the body of a function. To prevent the 
    creation of a global variable (or the use of an existing global variable) when 
    you meant to create a local variable for use within a single function, you must 
    always use the var statement within function bodies. It's best to use var for 
    all variables, whether global or local. (The distinction between local and 
    global variables is explored in more detail in the next section.)

    //JavaScript: The Definitive Guide, 4th Edition -- 4.2.1 Repeated and Omitted 
    Declarations 
    2006-10-15 22:00:53

    10. Error Objects

    ECMAScript v3 defines a number of classes that represent errors. The JavaScript 
    interpreter "throws" an object of one of these types when a runtime error 
    occurs. (See the throw and try statements in Chapter 6 for a discussion of 
    throwing and catching errors.) Each error object has a message property that 
    contains an implementation-specific error message. The types of predefined error 
    objects are Error, EvalError, RangeError, ReferenceError, SyntaxError, 
    TypeError, and URIError. You can find out more about these classes in the core 
    reference section of this book.

    //JavaScript: The Definitive Guide, 4th Edition -- 3.11 Error Objects 
    2006-10-15 19:39:08

    9. undefined

    Another special value used occasionally by JavaScript is the undefined value 
    returned when you use either a variable that has been declared but never had a 
    value assigned to it, or an object property that does not exist. Note that this 
    special undefined value is not the same as null.

    Although null and the undefined value are distinct, the == equality operator 
    considers them to be equal to one another. Consider the following: 
    my.prop == null

    //JavaScript: The Definitive Guide, 4th Edition -- 3.8 undefined 
    2006-10-15 18:02:39

    8. The way to really learn a new programming language is to write programs with 
    it.

    //JavaScript: The Definitive Guide, 4th Edition -- 1.10 Exploring JavaScript 
    2006-10-14 2:40:02

    7. Both Netscape and Microsoft have made their JavaScript interpreters available 
    to companies and programmers who want to embed them in their applications. 
    Netscape's interpreter was released as open source and is now available through 
    the Mozilla organization (see http://www.mozilla.org/js/). Mozilla actually 
    provides two different versions of the JavaScript 1.5 interpreter. One is 
    written in C and is called "SpiderMonkey." The other is written in Java and, in 
    a flattering reference to this book, is called "Rhino."

    //JavaScript: The Definitive Guide, 4th Edition -- 1.4 JavaScript in Other 
    Contexts 
    2006-10-14 1:13:44

    6. 11.1.2 Explicit Type Conversions

    Table 11-1 listed the automatic data type conversions that JavaScript performs. 
    It is also possible to explicitly convert values from one type to another. 
    JavaScript does not define a cast operator as C, C++, and Java do, but it does 
    provide similar facilities for converting data values.

    As of JavaScript 1.1 (and the ECMA-262 standard), Number( ) , Boolean( ), 
    String( ), and Object( ) may be called as functions as well as being invoked as 
    constructors. When invoked in this way, these functions attempt to convert their 
    arguments to the appropriate type. For example, you could convert any value x to 
    a string with String(x) and convert any value y to an object with Object(y).

    There are a few other tricks that can be useful for performing explicit 
    conversions. To convert a value to a string, concatenate it with the empty 
    string: 
    var x_as_string = x + "";

    To force a value to a number, subtract zero from it: 
    var x_as_number = x - 0;

    And to force a value to boolean, use the ! operator twice: 
    var x_as_boolean = !!x;

    Because of JavaScript's tendency to automatically convert data to whatever type 
    is required, explicit conversions are usually unnecessary. They are occasionally 
    helpful, however, and can also be used to make your code clearer and more 
    precise.

    //JavaScript: The Definitive Guide, 4th Edition -- 11.1 Data Type Conversion 
    2006-10-12 12:36:23

    5. Each RegExp object has five properties. The source property is a read-only 
    string that contains the text of the regular e­xpression. The global property is 
    a read-only boolean value that specifies whether the regular e­xpression has the 
    g flag. The ignoreCase property is a read-only boolean value that specifies 
    whether the regular e­xpression has the i flag. The multiline property is a 
    read-only boolean value that specifies whether the regular e­xpression has the m 
    flag. The final property is lastIndex, a read-write integer. For patterns with 
    the g flag, this property stores the position in the string at which the next 
    search is to begin. It is used by the exec( ) and test( ) methods, as described 
    in the previous section.

    //JavaScript: The Definitive Guide, 4th Edition -- 10.3.2 RegExp Instance 
    Properties 
    2006-10-9 21:23:26

    4. the RegExp constructor. search( ) does not support global searches -- it 
    ignores the g flag of its regular e­xpression argument.

    //JavaScript: The Definitive Guide, 4th Edition -- 10.2 String Methods for 
    Pattern Matching 
    2006-10-9 19:56:40

    3. We've seen the . operator used to access the properties of an object. It is 
    also possible to use the [] operator, which is more commonly used with arrays, 
    to access these properties. Thus, the following two JavaScript e­xpressions have 
    the same value:

    object.property 
    object["property"]

    //JavaScript: The Definitive Guide, 4th Edition -- 8.6 Objects as Associative 
    Arrays 
    2006-10-9 14:45:13

    2. The typeof Operator

    typeof is a unary operator that is placed before its single operand, which can 
    be of any type. Its value is a string indicating the data type of the operand.

    The typeof operator evaluates to "number", "string", or "boolean" if its operand 
    is a number, string, or boolean value. It evaluates to "object" for objects, 
    arrays, and (surprisingly) null. It evaluates to "function" for function 
    operands and to "undefined" if the operand is undefined. 
    //JavaScript: The Definitive Guide, 4th Edition -- 5.10.2 The typeof Operator

    1. JavaScript strings (and JavaScript arrays, as we'll see later) are indexed 
    starting with zero.


    ---/---------------------------------------------------------

    小小心得

    1. 花括弧定义 对象 元素, 方括弧定义 数组 元素. 2006-10-15 17:55:50

    2. Javascript 正則表達式摘要

    linenum 
    Javascript 与正則表達式 By shawl.qiu


    语法方法:

    5. str.split() 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var str=' this , is, a, text'; 
    document.write(str.split(//s*,/s*/)); 
    document.write('<br/>'); 
    document.write(str.split(//s*,/s*/).join()); 
    //]]> 
    </script>

    4. str.match() 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var str=' This is a test. '; 
    document.write(str.match(//w+/).join()); 
    document.write('<br/>'); 
    document.write(str.match(//w+/g).join()); 
    //]]> 
    </script>

    3. str.replace() 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var str=' This is a test. '; 
    document.write(str.replace(/^(/s+)|(/s+)$/,'----------')); 
    document.write('<br/>'); 
    document.write(str.replace(/^(/s+)|(/s+)$/g,'----------')); 
    //]]> 
    </script>

    2. str.search() 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var str=' This is a test. '; 
    document.write(str.search(/this/i)); 
    //]]> 
    </script>

    1. 子匹配 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var str=' this is a test ' 
    document.write(str.match(/(is+).*?

    /1/)[0]); 
    //]]> 
    </script>

    0. 创建正則表達式模式

    0.1 new RegExp() 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var str=' this is a test ' 
    var re=new RegExp('//w+','g'); 
    document.write(str.match(re)); 
    //]]> 
    </script>

    -1. re.exec(str) 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var str=' this is a test ' 
    var pt=/this|test/g;

    var report 
    while((report=pt.exec(str))!=null){ 
    document.write(('match: ').bold()+report[0].fontcolor('red')+'<br/>'); 
    document.write(('match index: 
    ').bold()+(report.index+'').fontcolor('red')+'<br/>'); 
    document.write(('match lastIndex: 
    ').bold()+(pt.lastIndex+'').fontcolor('red')+'<p/>'); 

    //]]> 
    </script>

    -2. re.test(str) 
    <script type="text/javascript"> 
    //<![CDATA[ 
    var str=' this is a test '; 
    var re=//d+/; 
    document.write(re.test(str));

    var re=//w+/; 
    document.write(re.test(str)); 
    //]]> 
    </script>

    ---/----------------------------------------

    摘要:

    4. The String methods search( ) , replace( ), and match( ) do not use the 
    lastIndex property as exec( ) and test( ) do. In fact, the String methods simply 
    reset lastIndex( ) to 0. If you use exec( ) or test( ) on a pattern that has the 
    g flag set and you are searching multiple strings, you must either find all the 
    matches in each string, so that lastIndex is automatically reset to zero (this 
    happens when the last search fails), or you must explicitly set the lastIndex 
    property to 0 yourself. If you forget to do this, you may start searching a new 
    string at some arbitrary position within the string rather than from the 
    beginning. Finally, remember that this special lastIndex behavior occurs only 
    for regular e­xpressions with the g flag. exec( ) and test( ) ignore the 
    lastIndex property of RegExp objects that do not have the g flag.

    //JavaScript: The Definitive Guide, 4th Edition -- 10.3.1 RegExp Methods for 
    Pattern Matching 
    2006-10-20 18:10:36

    3. match method 
    The match( ) method is the most general of the String regular e­xpression 
    methods. It takes a regular e­xpression as its only argument (or converts its 
    argument to a regular e­xpression by passing it to the RegExp( ) constructor) 
    and returns an array that contains the results of the match. If the regular 
    e­xpression has the g flag set, the method returns an array of all matches that 
    appear in the string. For example: 
    "1 plus 2 equals 3".match(//d+/g) // returns ["1", "2", "3"]

    //JavaScript: The Definitive Guide, 4th Edition -- 10.2 String Methods for 
    Pattern Matching 
    2006-10-20 17:23:08

    2. search method 
    Strings support four methods that make use of regular e­xpressions. The simplest 
    is search( ). This method takes a regular e­xpression argument and returns 
    either the character position of the start of the first matching substring, or 
    -1 if there is no match. For example, the following call returns 4: 
    "JavaScript".search(/script/i);

    If the argument to search( ) is not a regular e­xpression, it is first converted 
    to one by passing it to the RegExp constructor. search( ) does not support 
    global searches -- it ignores the g flag of its regular e­xpression argument.

    //JavaScript: The Definitive Guide, 4th Edition -- 10.2 String Methods for 
    Pattern Matching

    1. A number of punctuation characters have special meanings in regular 
    e­xpressions. They are: 
    ^ $ . * + ? = ! : | / / ( ) [ ] { } 
    //JavaScript: The Definitive Guide, 4th Edition -- 10.1 Defining Regular 
    Expressions

     

  • 相关阅读:
    Linux-获取当前正在执行脚本的绝对路径
    Linux-SSL和SSH和OpenSSH,OpenSSL有什么区别
    Nginx-SSI
    Linux-TCP/IP TIME_WAIT状态原理
    Linux-IP地址后边加个/8(16,24,32)是什么意思?
    Nginx-/etc/sysctl.conf 参数解释
    Linux-内核缓存区和write行为
    常用音频软件:Cool edit pro
    常用音频软件:Wavesufer
    【转】智能音箱技术概览
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/6844997.html
Copyright © 2020-2023  润新知