JavaScript使用技巧精
- 格式:doc
- 大小:100.50 KB
- 文档页数:15
js中log的用法-回复题目:JavaScript中的log方法:一步一步深入解析引言:在编程领域里,打印日志是开发者调试和查看程序运行时状态的重要手段之一。
在JavaScript中,我们使用log方法来记录输出信息。
本文将从log 方法的使用、参数说明、常见技巧以及高级用法等方面,详细分析log方法的各个层面。
一、log方法的基本使用log方法是JavaScript中console对象的一个方法,主要用于在控制台输出信息。
我们可以用简单的语法形式将日志消息记录到控制台:javascriptconsole.log(message);其中,message是需要打印的消息内容,可以是任意类型的数据。
二、log方法的参数说明log方法可以接受多个参数,并且它们的类型可以是不同的。
让我们来看一下不同参数的用法:1. 字符串参数javascriptconsole.log("Hello World");这将在控制台输出字符串"Hello World"。
2. 多个参数javascriptconsole.log("Name:", name, "Age:", age);这将在控制台输出类似“Name: John Age: 25”的字符串。
逗号会在不同参数之间自动添加空格。
3. 占位符log方法还支持占位符,可以通过占位符将变量值动态地插入到日志消息中:javascriptconsole.log("My name is s and I'm d years old.", name, age);这将输出类似"My name is John and I'm 25 years old."的字符串。
s表示字符串占位符,d表示数字占位符。
三、log方法的常见技巧在实际的开发中,我们经常需要输出更详细的信息或进行调试。
JavaScript三元运算符JavaScript三元运算符的多种使⽤技巧发现代码慢慢写多了的时候会不⾃觉的将if else ⽤三元来替代,仅仅是未了让代码更简洁精辟,当然也有⼈说⽤三元可以让你有⾼潮的感觉。
最近在写js 的时候也有这样的感觉,并且收集了⼀些⼩技巧,分享分享。
⼤鸟请跳过下⾯这段,⼤⼤鸟帮忙指正 ^__^====普及线====表达式 (expr1) ? (expr2) : (expr3)在 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
============普通⽤法当你发现你经常⽤if else代码如下:if(拜春哥 || 拜考试帝){不挂科;}else{门门挂;}那么三元的表⽰法就是代码如下:拜春哥 || 拜考试帝 ? 不挂科 : 门门挂很帅⽓的发现代码精辟了好多。
⽇常中经常会有这样的 if else 判断,特别是嵌套⽐较多的时候⽤三元是⽐较和谐的,可以让你的代码看起来更加清爽,结构清晰。
稍微聪明点的⽤法通过不断的变化,可以衍⽣出很多三元的⽤法。
如下⼀段jquery代码代码如下:flag ? $('body').addClass('hover') : $('body').removeClass('hover') ;甚⾄更变态些的。
代码如下:$('.item')[ flag ? 'addClass' : 'removeClass']('hover')上⾯的代码看着⽐较困惑。
因为当flag = true 的时候,代码就变成以下代码:代码如下:$('.item')['addClass']('hover')这样写法等同于。
代码如下:$('.item').addClass('hover')再升华⼀下可以根据需要来调⽤⾃⼰想要的function来处理更多的事情。
js截取字符串的方法在JavaScript中,对字符串的处理经常需要使用到截取操作,即从一个字符串中取出某一段部分,有多种截取字符串的方法,本文将介绍几种常用的方法以及它们之间的区别。
1. substring()法substring()法用于提取字符串中介于两个指定下标之间的字符,即提取字符串的一部分。
该方法接受两个参数,分别代表起始下标和结束下标,不包括结束下标,当两个参数相等时则返回空,调用方法如下:var str = Hello World!;var substr = str.substring(3,8); // substr 为 lo Wo2. substr()法JS substr()法与 substring()似,也是提取字符串的一部分,只不过它的参数比 substring()了一个长度。
调用方法如下:var str = Hello World!;var substr = str.substr(3,5); // substr 为 lo Wo 其中第一个参数表示起始下标,第二个参数表示从起始下标开始计算需要截取多少个字符。
3. slice()法slice()法与 substring() substr()似,它们的调用方法十分相似,只不过它的参数可以接受负数,如果传入的参数为负数,则相当于从字符串末尾倒数去推算。
调用方法如下:var str = Hello World!;var substr = str.slice(3,-1); // substr 为 lo Worl 以上就是目前 JavaScript 中常用的三种截取字符串的方法,他们的作用基本相同,只是参数有所不同,选择正确的方法以取得更精准的效果。
JavaScript 中还有一些字符串处理方法可以用于截取字符串,例如 indexOf()、lastIndexOf(),因为它们的参数与上面的方法不一样,所以使用起来需要注意,掌握使用及转换的技巧以及它们之间的关系,就可以更方便快捷的完成字符串处理操作。
JavaScript允许创建和打开代表HTML文本, form对象和frame的窗口. window对象是JavaScript客户层次结构的最顶层对象, form元素和全部JavaScript代码都是存在于文档中,而文档被装载进窗口. 为了理解窗口怎样工作,你可以控制操作这些窗口.打开和关闭窗口当用户启动(launch)Navigator时,将自动创建一个窗口.用户还可以使用Navigator的File菜单上的New Web Browser打开一个窗口, 可以用Navigator的File菜单的Close或Exit关闭一个窗口.也可以用程序的办法来打开或关闭一个窗口.打开窗口用方法open创建一个窗口.下面语句创建了一个名为msgWindow的窗口,并在该窗口内显示文件sesame.html的内容.msgWindow=window.open("sesame.html")下面的这个语句能够创建一个名为homeWindow的窗口,用于显示Netscape的home page. homeWindow=window.open("")窗口可以有两个名字.下述语句创建了一个有两个名字的窗口,第一个名字为msgWindow用于引用窗口的属性,方法和包含关系, 第二个名字displayWindow用于把窗口作为form提交或超文本链的对象来引用时.创建窗口时,并不要求一定给出窗口名.但是你若打算从另一个窗口中引用此窗口,则此窗口必须有一个名字.有关使用窗口名字的信息参见windows and frames有关资料.打开窗口时,可以指定窗口属性,如窗口的高度,宽度,是否包含工具条,location域或滚动条等等.下述语句创建了一个没有工具条但带有滚动条的窗口.msgWindow=window.open("sesame.html","displayWindow","toolbar=no,scrollbars=yes")有关窗口的属性的细节请参见OPEN 方法.关闭窗口可以在程序中使用方法close来关闭一个窗口.不允许只关闭一个frame, 而不关掉整个父窗口.下述语句均可关闭当前窗口:window.close()self.close()//此语句不能用在事件处理程序中close()下述语句关闭了一个名为msgWindow的窗口:msgWindow.close()--------------------------------------------------------------------------------使用frameframe是一种特殊的窗口,它可以在一个窗口显示多个独立滚动的frame.每个frame又有各自不同的URL. 各frame可以指向不同的URL,也可以作为其它URL目标,但必须在同一个窗口内. 一系列的frame 组成页(page).下图是一个含有三个frame的窗口This frame is This frame isnamed listFrame named contentFrame| |-----------------v-----------------------------------v------------| Music Club | Toshiko Akiyoshi || Artists | Interlude || Jazz | The Beatles || - T. Akiyoshi | Please Please Me || _ J. Coltrame | || - M. Davis | Betty carter || - D. Gordon | Ray Charles and Betty Carter || Soul | Jimmy Cliff || - B. Carter | The Harder They Come || _ R. Charles | || ... | ... |------------------------------------------------------------------| Alphabetical By category Musician Descriptions |-----------------^------------------------------------------------|This frame is namednavigateFrame创建一个frame在HTML文档中使用<frameSET>标记就可以创建一个frame. <frameSET>标记在HTML文档中的唯一作用就是定义组成页的各个frame的布局(layout).例1 下述语名定义了上图所示的一组frame<FRAMESSET ROWS ="90%,10%"><FRAMESET COLS="30%,70%"><FRAME SRC=category.html NAME="listFrame">ALT="BACKWARD" HEIGHT=32 WIDTH=32> <FRAME SRC=titles.html NAME="contentFrame>ALT="BACKWARD" HEIGHT=32 WIDTH=32> </FRAMESET><FRAME SRC =navigate.html NAME="navigateFrame"></FRAMESET>下图给出了这些frame的层次结构,虽然有两个frame是在另一个frameset中定义的,但这三个frame有同一个父亲, 这是因为frame的父亲是它的父窗口,而窗口是由frame而不是frameset确定的.top+--listFrame (category.html)+--contentFrame(titles.html)+--navigateFrame(navigate.html)你也可以数组frames引用上述的frame(有关数组frames的信息参见frame对象): listframe 用top.frame[0]表示contentframe 用top.frame[1]表示navigateframe 用top.frame[2]表示例2 可以用另一个办法创建上述窗口: 最前面的两个frame与navigateFrame各有不同的父辈,顶层的frameset定义如下:<FRAMESSET ROWS ="90%,10%"><FRAME SRC=muske13.htm NAME="upperFrame">ALT="BACKWARD" HEIGHT=32 WIDTH=32> <FRAME SRC=navigate.html NAME="navigateFrame>ALT="BACKWARD" HEIGHT=32 WIDTH=32> </FRAMESET>文件muskel3.html包含了上述frame的骨架,并定义了下述frameset.<FRAMESSET COLS ="30%,70%"><FRAME SRC=categroy.html NAME="listFrame">ALT="BACKWARD" HEIGHT=32 WIDTH=32> <FRAME SRC=titles.html NAME="contentFrame>ALT="BACKWARD" HEIGHT=32 WIDTH=32> </FRAMESET>下图说明了这几个frame的层次关系upperFrame和navigateFrame共享一个父辈:最顶的window. 而listFrame和contentFrame共享一个父辈:upperFrame.top| +--listFrame| | (category.html)+---upperFrame-----------|| (muske13.html) || +--contentFrame| (titles.html)+--navigateFrame(navigate.html)可以用下面的办法引用这些frame(关于frame数组的信息参见frame对象).upperFrame 用top.frame[0]表示navigateFrame 用top.frame[1]表示listFrame 用upperFrame.frames[0] 或top.frames[0].frames[0]表示contentFrame 用upperFrame.frames[1] 或top.frames[0].frames[1]表示更新frame(updating frames)只要你说明了frame层次结构,你可以用location属性来设置URL, 以更新frame的内容.例如,在使用上节例2中frameset时,若希望用户能够关闭含有字母序或分类序的画家列表的frame(名为listframe),且只想看到按作曲家排序的作品标题(在contentFrame中), 则可以向navigateFrame 中加入如下按钮.<INPUT TYPE="button" VALUE="Titles Only"onClick="top.frames[0].location='artists.html'">当用户按动此按钮时,文件artist.html被加载到名为upperFrame的frame中,而listFrame和contentFrame被关闭,且不再存在.引用frame和在frame之间浏览(navigate)因为frame是一种窗口,所以你可以与使用窗口类似的办法引用frame和在frame 之间浏览. frame的例子在上一节中, 若frameset被设计为一个音乐俱乐部的可用的标题,则这些frame及其HTML 文件包括下述的内容:category.html 位于listFrame中, 放有按分类排序的作曲家列表titles.html 位于contentFrame中, 放有按字母序列里各作曲家姓名及该作曲家的作品标题. navigate.html 位于navigateFrame中, 放有超文本链, 使用户选择怎样在listFrame中显示作曲家:以字母序或分类序.这个文件还定义了一个超文本链, 使用户可以显示每个作曲家的简介.附加文件alphabet.html 放有按字母排序的作曲家,当用户想显示字母序列表时,按动此链,这个文件中就显示在listFrame中.文件category.html (按分类排序)包含的代码类似于下述:<B>Music Club Artists</B><P><B>Jazz</B><LI><A HREF=titles.html#0001 TARGET="contentFrame">Toshiko Akiyoshi</A><LI><A HREF=titles.html#0006 TARGET="contentFrame">Jon Coltrane</A><LI><A HREF=titles.html#0007 TARGET="contentFrame">Miles Davis</A><LI><A HREF=titles.html#0010 TARGET="contentFrame">Dexter Gordon</A><P><B>Soul</B><LI><A HREF=titles.html#0003 TARGET="contentFrame">Betty Cater</A><LI><A HREF=titles.html#0004 TARGET="contentFrame">Ray Charles</A>...文件alphabet.html (按字母排序) 包含的代码类似于下述:<B>Music Club Artists</B><LI><A HREF=titles.html#0001 TARGET="contentFrame">Toshiko Akiyoshi</A><LI><A HREF=titles.html#0002 TARGET="contentFrame">The Beatles</A><LI><A HREF=titles.html#0003 TARGET="contentFrame">Betty Carter</A><LI><A HREF=titles.html#0004 TARGET="contentFrame">Ray Charles</A>......文件navigate.html(在屏幕底部的导航链)包含的代码类似下面. 注意: artists.html的目标是"_parent". 当用户按动此链时,整个窗口被重写,因为最上层窗口是navigateFrame的父辈.<A HREF=alphabet.html TARGET="listFrame"><B>Alphabetical</B></A><A HREF=category.html TARGET="listFrame"><B>By category</B></A><A HREF=artists.html TARGET="_parent"><B>Musician Descriptopns</B></A>文件titles.html(主文件,显示在右边的框架中)包括的代码大致如下:<!------------------------------------------------------------------><A NAME="0001"><H3>Toshiko Akiyoshi</H3></A><P>Interlude<!------------------------------------------------------------------><A NAME="0002"><H3>The Beatles</H3></A><P>Please Please Me<!------------------------------------------------------------------><A NAME="0003"><H3>Betty Carter</H3></A><P>Ray Charles and Betty Carter...有关创建frame语法细节参见frame对象.--------------------------------------------------------------------------------引用window和frame用哪个名字来引用窗口取决于你是想引用窗口的属性、方法和事件处理程序,还是想把window作为form提交或超文本链的对象.因为window对象位于JavaScript客户层次结构的最顶层. window是说明窗口内各对象间包含关系的基础.引用窗口的属性、方法和事件处理程序可以用如下办法之一来引用当前窗口或其它窗口的属性、方法及事件处理程序:self或window: self和window含义相同, 都是指当前窗口, 可以任选其一来引用当前窗口.如,调用window.close()或self.close()来关闭当前窗口top或parent: top和parent均用来替代窗口的名称. top是指最上层的Navigator窗口, parent 则是指包含frameset的窗口.例如,语句parent.frame2.document.bgColor="teal"把名为frame2的frame的背景颜色置成teal. frame2是当前frameset的一个frame.窗口变量的名字: 窗口变量名为打开窗口时指定的变量.如,msgWindow.close关闭名为msgWindow的窗口. 但是若想在事件处理程序中打开或关闭一个窗口,必须用window.open()或window.close(),而不能用open()和close().由于JavaScript中的静态对象的作用域问题, 调用close而不指定对象名等价于document.close().省略窗口名. 因为总是假定了当前窗口,调用窗口的方法和使用其属性时,可以省略窗口名. 如close()关闭了当前窗口.有关窗口方法的信息参见window对象例1 引用当前窗口. 下面这个语句引用了当前窗口内的名为musicform的form.如果核对框被核对,则该语句显示一个警示.if (self.document.musicForm.checkbox1.checked)alert('The checkbox on the misicForm is checked')例2 引用其它窗口.下面的语句引用了位于窗口checkboxWin的名为musicform的form.这些语句实现判断是否核对框被核对,执行核对该核对框,判断是否select对象的一个选项被选中,选择SELECT 对象的一个选项//判断是否核对框被核对if (checkboxWin.document.musicForm.checkbox2.checked) {alert('The checkbox on the misicForm in checkboxWin is checked')}//执行核对该核对框checkboxWin.document.musicForm.checkbox2.checked=true//判断是否select对象的一个选项被选中if (checkboxWin.document.musicForm.musicTypes.options[1].selected)alert('Option 1 is selected!')//选择SELECT 对象的一个选项checkboxWin.document.musicForm.musicTypes.selectedIndex=1例3 引用另一个窗口中的frame. 下述语句引用了窗口window2中的名为frame2的frame.这条语句把frame2的背景颜色改为紫色,名字frame2必须是在<FRAMESET>标记中指明. <FRAMESET>能产生frameset.window2.frame2.document.bgColor="violet"在form提交或超文本链中引用一个窗口当把一个窗口用作form提交或超文本链的对象时(作为<FORM>或<A>标记的TARGET属性), 要使用窗口名,而不能用窗口变量. 这个窗口将是链被装载进的窗口,或者对于form来说,是显示服务器响应的窗口.例1 第二窗口. 下面的例子给第二窗口创建了一个超文本链.这个例子中,有:一个按钮,此按钮窗口能打开名为window2的窗口;一个链接,把文件doc2.html装入最新打开的窗口;另一个按钮,此按钮关闭窗口.<P><INPUT TYPE="button" VALUE="Open window2"onClick="msgWindow=window.open('','resizable=no,width=200,height=200')"<P><INPUT TYPE ="button" VALUE="Close window2"onClick="msgWindow.close()">例2 第二窗口的anchor.在第二窗口内给anchor创建一个超文本链,这个链接在窗口window2中显示文件doc2.html的名为number的anchor .<A HREF=doc2.html#numbers TARGET="window2">Numbers</A>例3 frame的名称. 下例为frame内的anchor创建了一个超文本链.这个链在名为contFrame 中显示文件sesame.html中名为abs_method.这个frame必须放在当前frameset中,且frame 的名字要用<FRAMESET>标记的NAME属性定义.<A HREF=sesame.html#abs_method TARGET="contentFrame">abs</A>例4 常frame的名称. 下例为文件创建了一个超文本链.这个链把文件artists.html的内容显示在当前frameset的父窗口内,这个链对象(link object)出现在frameset的某个frame中,当用户按动此链时, frameset中的所有frame都消失,artists.ftml的内容被装入到父窗口内.<A HREF="artists.html" TARGET="_parent"><B>Musician Descriptions</B></A>--------------------------------------------------------------------------------在窗口之间浏览(Navigating among windows)可以同时打开很多Navigator窗口. 用户可以按动窗口,给此窗口focus,实现在这些窗口之间浏览. 你可以用编程序的办法把focus给一个窗口内的对象,或者通过指定此窗口作为超级文本链目标的办法.尽管你能改变第二窗口内对象的值,但并不能激活第二窗口,当前窗口总是活动的.活动窗口是拥有focus的窗口,一旦窗口拥有了focus,此窗口被放在最前面,能够可见地被改变. 例如,此窗口的标题栏可以改变颜色. 视觉效果随你所用的平台而有所变化.例1 把focus赋给另一个窗口的对象.下述语句可以把focus赋给窗口checkboxWin内的文本对象city, 因为city获得了focus, checkboxWin也就得到了focus而成了活动窗口.这个例子还包括了创建checkboxWin的语句.checkboxWin=window.open("doc2.html")...checkboxWin.document.musicForm.city.focus()例2 利用超文本链把focus赋给另一个窗口. 下面的句子指定window2作为超文本链的目标,当用户按动此链时,focus转换到window2, 若window2不存在,则被创建.<A HREF="doc2.html" TARGET="window2"> Load a file into window2</A>。
js计算保留两位小数精度计算方法在编程中,对于保留两位小数的精度计算,通常使用的是四舍五入的方式,将计算结果保留到指定的小数位数。
在JavaScript中,我们可以使用内置的方法来实现这一功能,这可以帮助我们在开发过程中处理数值类型的数据时保持精度。
在JavaScript中,有多种方法可以实现保留两位小数的精度计算。
下面将介绍一些常用的方法和技巧。
1. toFixed()方法:toFixed()方法是JavaScript中用于保留指定位数小数的方法。
它将数字四舍五入到指定的小数位数,并返回一个字符串表示此数字。
例如:```javascriptlet num = 3.14159;let roundedNum = num.toFixed(2);console.log(roundedNum); //输出3.14```这里,toFixed()方法将3.14159四舍五入到小数点后两位,并返回字符串"3.14"。
2.将数字乘以100后取整再除以100:这是一种比较简单的方法,将数字乘以100后取整,再将结果除以100即可实现保留两位小数的效果。
例如:```javascriptlet num = 3.14159;let roundedNum = Math.round(num * 100) / 100;console.log(roundedNum); //输出3.14```这里,我们将3.14159乘以100后取整得到314,再除以100得到3.14。
3.使用Number对象的toPrecision()方法:toPrecision()方法用于将数字格式化为指定的有效数字位数。
我们可以将有效数字位数设置为3,然后再将结果除以100即可实现保留两位小数的效果。
例如:```javascriptlet num = 3.14159;let roundedNum = (Math.round(num * 1000) /10).toPrecision(3);console.log(roundedNum); //输出3.14```这里,我们将3.14159乘以1000后取整得到3142,再除以10得到314.2,最后使用toPrecision(3)方法得到字符串"3.14"。
jscript读写二进制文件的方法_javascript技巧在JavaScript中,可以使用Node.js的内置模块`fs`(文件系统)来读写二进制文件。
以下是一个简单的示例:**读取二进制文件**```javascriptconst fs = require('fs');fs.readFile('example.bin', 'binary', (err, data) => {if (err) throw err;console.log(data);});```在这个例子中,我们使用`fs.readFile`函数读取一个名为`example.bin`的二进制文件。
第二个参数`'binary'`告诉Node.js我们要以二进制模式读取文件。
**写入二进制文件**```javascriptconst fs = require('fs');let data = new Buffer.from([0x48, 0x65, 0x6c, 0x6c, 0x6f,0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64]); // Hello World in ASCIIfs.writeFile('output.bin', data, 'binary', (err) => {if (err) throw err;console.log('The file has been saved!');});```在这个例子中,我们首先创建一个Buffer对象,其中包含我们要写入文件的二进制数据。
然后,我们使用`fs.writeFile`函数将数据写入名为`output.bin`的文件。
同样,我们使用`'binary'`作为第三个参数,告诉Node.js我们要以二进制模式写入文件。
使用JavaScript创建网页游戏的技巧一、引言随着互联网的快速发展,网页游戏已经成为了人们娱乐休闲的重要方式。
而JavaScript作为一种广泛应用于Web开发领域的编程语言,其强大的交互性和可扩展性使得它成为了开发网页游戏的理想选择。
本文将介绍一些使用JavaScript创建网页游戏的技巧,希望能够对广大游戏开发者提供一些帮助。
二、游戏引擎的选择在开始开发网页游戏之前,我们需要选择一个适合的游戏引擎来作为开发的基础。
幸运的是,市场上有许多强大的JavaScript游戏引擎可供选择,如Phaser、Three.js等。
选择一个合适的游戏引擎能够大大简化游戏开发的工作量,并提供一些优秀的工具和资源。
三、游戏画面的设计游戏画面是吸引玩家的重要因素之一,因此在开发网页游戏时需要注重画面的设计。
在JavaScript中,我们可以使用HTML5的canvas元素来绘制游戏画面。
可以通过设置canvas元素的宽高和样式,以及使用JavaScript的绘图API来创建漂亮且交互性强的游戏画面。
四、游戏逻辑的实现创建游戏的逻辑是网页游戏开发的核心部分。
使用JavaScript可以方便地实现游戏的控制逻辑、游戏玩法和游戏关卡设计等。
例如,可以使用JavaScript中的事件监听器来监听玩家的操作,并根据操作来改变游戏的状态和进行相关的计算。
五、碰撞检测的处理在许多网页游戏中,碰撞检测是一个常见的需求。
在JavaScript中,可以使用简单的算法来实现碰撞检测,例如使用矩形碰撞检测或圆形碰撞检测等。
通过实时检测游戏中的物体之间的碰撞情况,可以实现各种游戏效果,如碰撞反弹、碰撞消除等。
六、游戏性能的优化为了确保游戏的流畅运行,我们需要注意游戏的性能优化。
在JavaScript中,可以通过优化代码结构、减少不必要的计算、合理使用缓存等方式来提高游戏的性能。
此外,可以使用浏览器的开发工具来检测和分析游戏的性能瓶颈,并进行相应的优化。
Javascript模板引擎handlebars使⽤实例及技巧我们在开发的时候针对DOM操作,⽤简单的JS应⽤来说不成问题,但如果你对视图的每次更新都需要对我⽂档中⾮常⼤量的块进⾏操作呢?这时JS模版就派上⽤场了。
这是⼀个实例,我们可以把json的数据,按照⾃⼰的想法嵌⼊到模板⾥⾯。
<!DOCTYPE html><html><head><title>Handlebars Expressions Example</title></head><body><h1>Handlebars Expressions Example!</h1><!--this is a list which will rendered by handlebars template. --><div id="list"></div><script type="text/javascript" src=\'#\'" /jquery.js"></script><script type="text/javascript" src=\'#\'" /handlebars-1.0.0.beta.6.js"></script><script id="people-template" type="text/x-handlebars-template">{{#people}}<div class="person"><h2>{{first_name}} {{last_name}}</h2><div class="phone">{{phone}}</div><div class="email"><a href="mailto:{{email}}">{{email}}</a></div><div class="since">User since {{member_since}}</div></div>{{/people}}</script><script type="text/javascript">$(document).ready(function() {// compile our templatevar template = pile($("#people-template").html());var data = {people: [{ first_name: "rui", last_name: "fengyun", phone: "1234567890", email: "alan@", member_since: "Mar 25, 2011" },{ first_name: "Allison", last_name: "House", phone: "0987654321", email: "allison@", member_since: "Jan 13, 2011" },{ first_name: "Nick", last_name: "Pettit", phone: "9836592272", email: "nick@", member_since: "Apr 9, 2009" },{ first_name: "Jim", last_name: "Hoskins", phone: "7284927150", email: "jim@", member_since: "May 21, 2010" },{ first_name: "Ryan", last_name: "Carson", phone: "8263729224", email: "ryan@", member_since: "Nov 1, 2008" }]};$('#list').html(template(data));});</script></body></html>View Code看到这个例⼦,⼤家感觉很爽吧~ 就是这样。
JavaScript中代码错误排查与修复技巧JavaScript是一种广泛使用的脚本语言,但由于其动态性和弱类型特性,常常容易出现错误。
为了排查和修复这些错误,开发人员需要掌握一些技巧和方法。
以下是一些常见的JavaScript代码错误排查与修复技巧。
1.使用开发者工具浏览器提供了强大的开发者工具,可以帮助我们调试JavaScript代码。
其中包括控制台(console)、断点调试(debugger)、性能分析器(profiler)等工具。
通过使用这些工具,我们可以查看变量值、调用堆栈、错误消息等信息,从而更好地理解和排查错误。
2.仔细阅读错误消息当JavaScript代码出现错误时,浏览器会显示错误消息。
仔细阅读错误消息,可以帮助我们确定错误的类型和位置。
错误消息通常包含错误类型、文件名、行数等信息,这些信息对于定位错误非常重要。
3.缩小错误范围当出现错误时,我们可以通过逐步缩小错误范围来定位问题所在。
可以通过注释代码的方式或者分步执行代码的方式,逐步排除可能出错的部分。
当确定问题所在后,就可以针对性地进行修复。
4.使用断言和异常处理断言(assertion)和异常处理(exception handling)是JavaScript 代码中常用的技术。
断言可以帮助我们在代码中设置预期条件,以便在运行时验证这些条件是否成立。
异常处理则用于捕获和处理代码运行时发生的异常。
通过使用这些技术,我们可以更早地发现和处理错误。
5.编写单元测试单元测试可以帮助我们验证代码的正确性,并在代码发生变动后发现潜在的错误。
使用测试框架,编写各种场景的测试用例,以覆盖代码的不同执行路径和边界条件。
通过运行这些单元测试,我们可以更好地捕捉和修复潜在的错误。
6.代码审查和团队合作在项目开发过程中,通过代码审查和团队合作也可以发现和修复错误。
代码审查可以帮助我们发现潜在的问题,并提供改进的建议。
团队合作可以让我们共同面对问题,并集思广益,找到最佳的解决方案。
使用JavaScript开发网页游戏和互动效果的技巧与方法第一章:使用JavaScript开发网页游戏的基础知识JavaScript是一种广泛应用于网页开发的脚本语言,具备强大的功能和灵活性,可用于开发各类网页游戏和互动效果。
在开始设计和开发网页游戏之前,我们需要掌握以下基础知识:1.了解JavaScript语法和基本概念JavaScript是一种面向对象的语言,具备变量、函数、数组、循环、条件语句等常见的编程元素。
熟悉这些语法和概念对于开发网页游戏至关重要。
2.熟悉HTML和CSSHTML和CSS是网页的基础,我们需要掌握如何将JavaScript 与HTML和CSS相结合,实现游戏界面的搭建和样式的渲染。
第二章:网页游戏的设计和开发流程设计和开发一个成功的网页游戏需要有清晰的流程和规划。
以下是一个常见的网页游戏开发流程:1.确定游戏类型和目标受众在开始开发之前,我们需要明确游戏的类型和目标受众。
不同的游戏类型和目标受众会影响到游戏的设计和开发方式。
2.制定游戏规则和功能制定游戏规则和功能是游戏设计的核心步骤。
我们需要确定游戏的玩法、关卡设置、游戏角色、道具等,并将这些内容转化为程序逻辑。
3.搭建游戏界面使用HTML和CSS搭建游戏的界面。
界面的设计要简洁明了,便于玩家操作和理解游戏可以通过CSS设置样式和布局。
4.编写游戏逻辑使用JavaScript编写游戏逻辑,包括游戏开始和结束条件、角色移动、碰撞检测、计分等功能。
合理的游戏逻辑是游戏体验的关键。
5.测试和优化游戏在游戏开发完成后,进行测试并进行优化。
测试包括功能测试、用户体验测试等。
通过优化代码和修复bug,提升游戏的性能和用户体验。
第三章:网页游戏中常用的JavaScript技巧与方法在网页游戏开发过程中,我们常常会遇到一些常用的JavaScript技巧和方法,下面列举几个常见的例子:1.利用计时器实现动画效果通过使用JavaScript中的计时器函数(setInterval或setTimeout),可以实现一些动画效果,如角色的移动、特效的展示等。
JavaScript使用技巧精(一).确认删除用法:1. BtnDel.Attributes.Add("onclick","return confirm('"+"确认删除?"+"')");2. linktempDelete.Attributes["onclick"]="javascript:return confirm('"+"确认删除?"+"');";3. private void grdProject_ItemDataBound(object sender, DataGridItemEventArgs e)4.{if ((e.Item.ItemType == ListItemType.Item) | (e.Item.ItemType == ListItemType.AlternatingItem)) {// 刪除按鈕上的提示部分e.Item.Cells[10].Attributes.Add("onclick", "return confirm('确定删除吗?');");}}5.<script language="JavaScript" type="text/JavaScript">function delete_y(e){if(event.srcElement.outerText == "删除")event.returnValue=confirm("确定删除?");}document.onclick=delete_y;</script>(三).关闭窗体1.this.btnClose.Attributes.Add("onclick", "window.close();return false;");2.关闭本窗体间跳转到另一个页面this.HyperLink1.NavigateUrl = "javascript:onclick=window.opener.location.assign('" + "index.aspx"+ "?&Func=Edit&AutoID=" + intAutoid + ');window.close();";3.关闭父窗体:<INPUT type="reset" value=' <%=this._Cancel%>' onclick="window.parent.close()" Class="Button">4.关闭本弹出窗体,并刷新父页面this.Response.Write(" <script language='javascript'>window.opener.location.reload();window.close(); </script>");5.返回上一页超链接设置HRef属性:javascript:history.back(-1)(四).Web MessageBox1.Response.Write(" <script language=javascript> window.alert('保存成功1'); </script>");2.Response.Write(" <script>alert('"+"保存成功!"+"'); </script>");3.this.Page.RegisterStartupScript("ChiName"," <script language='javascript'>alert('" + "保存成功!" + "') </script>");(五).DataGrid中加CheckBox控件模板列.请看: /chengking/archive/2005/10/08/497520.aspx(六). window.open() 方法语法:window.open(pageurl,name,parameters);window对象的open()方法用于创建一个新的窗口实例,新创建的窗口的外观由参数:parameters指定。
新窗口中打开的文档由参数:pageurl指定。
系统能够根据参数:name确定的名称访问该窗口。
下表为parameters参数表:参数衩始值说明alwaysLowered yes/no 指定窗口隐藏在所有窗口之下。
alwaysRaised yes/no 指定窗口浮在所有窗口之上。
dependent yes/no 指定打开的窗口为父窗口的一个了窗口。
并随父窗口的关闭而关闭。
directions yes/no 指定Navigator 2和3的目录栏是否在新窗口中可见。
height pixel value 设定新窗口的像素高度。
hotkeys yes/no 在没有菜单栏的新窗口设置安全退出热键。
innerHeight pixel value 设置新窗口中文档的像素高度。
innerWidth pixel value 设置新窗口中文档的像素宽度。
location yes/ no 指明位置栏在新窗口中是否可见。
menubar yes /no 指明菜单栏在新窗口中是否可见。
outerHeight pixel value 设定窗口(包括装饰边框)的像素高度。
outerWidth pixel value 设定窗口(包括装饰边框)的像素宽度。
resizable yes /no 指明新窗口是否可以调整。
screenX pixel value 设定新窗口离屏幕边界的像素长度。
screenY pixel value 设定新窗口离屏幕上边界的像素长度。
scrollbars yes /no 指明滚动栏在新窗口中是否可见。
titlebar yes /no 指明菜单题目栏在新窗口是否可见。
toolbar yes /no 指明工具栏在新窗口中是否可见。
Width pixel value 设定窗口的像素宽度。
z-look yes /no 在文档中包含各个<pplet>标签的数组。
fullscreen yes / no 打开的窗体是否进行全屏显示left pixel value 设定新窗口距屏幕左方的距离top pixel value 设定新窗口距屏幕上方的距离例子:<html><head><title>window.open函数</title></head><body><script language="javascript"><!--window.open("","name1","width=100,height=200,toolbar=no,scrollbars=no,menubar=no,screenX =100,screenY=100");//--></script></body></html>div img {max-width:600px;width:600px;width:expression(document.body.clientWidth>600?"600px":"auto");overflow:hidden;}图片自适应大小Response.Write("<script langueage='javascript'>alert('采购单提交成功!谢谢您的采购!'); location.href='index.htm' </script>");Response.Write("<script>setTimeout(\"location.href=\'\'\",2000);</script>");gridview中Response.Write("<script langueage='javascript'>alert('修改成功!');window.history.go(-2);</script>");<script language="javascript">document.getElementById("msh2").innerHTML=document.getElementById("Layer1").innerHTML;</script>25.光标是停在文本框文字的最后<script language=javascript>function cc(){var e = event.srcElement;var r =e.createTextRange();r.moveStart('character',e.value.length);r.collapse(true);r.select();}</script><input type=text name=text1 value=123 onfocus=cc()>3.关闭当前窗口<a href="/"onClick="javascript:window.close();return false;">关闭窗口</a>4.5秒后关闭当前页<script language="Javascript"><!--setTimeout('window.close();',5000);--></script>5.2秒后载入指定网页<head><meta http-equiv="refresh" content="2;URL=http://你的网址"></head>6./* 加入收藏夹*/function JSAddFavorite(FavName, FavUrl){if ( window.sidebar && "object" == typeof( window.sidebar ) && "function" == typeof( window.sidebar.addPanel ) ){// firefoxwindow.sidebar.addPanel( FavName, FavUrl, '' );}else if ( document.all && "object" == typeof( window.external ) ){// iewindow.external.AddFavorite(FavUrl, FavName);}}7.让超链接不显示下划线<style type="text/css"><!-a:link{text-decoration:none}a:hover{text-decoration:none}a:visited{text-decoration:none}-></style>9.设置该页为首页<body bgcolor="#FFFFFF" text="#000000"><!-- 网址:http://你的网址--><a class="chlnk" style="cursor:hand" HREFonClick="this.style.behavior='url(#default#homepage)';this.setHomePage('你的网站名称);"><font color="000000" size="2" face="宋体">设为首页</font></a></body>10.节日倒计时<script Language="Javascript">var timedate= new Date("December 25,2003");var times="圣诞节";var now = new Date();var date = timedate.getTime() - now.getTime();var time = Math.floor(date / (1000 * 60 * 60 * 24));if (time >= 0)document.write("现在离"+times+"还有: "+time +"天")</script>13.显示系统当前日期<script language=Javascript>today=new Date();function date(){this.length=date.arguments.lengthfor(var i=0;i<this.length;i++)this[i+1]=date.arguments }var d=new date("星期日","星期一","星期二","星期三","星期四","星期五","星期六");document.write("<font color=##000000 style='font-size:9pt;font-family: 宋体'>",today.getYear(),"年",today.getMonth()+1,"月",today.getDate(),"日",d[today.getDay()+1],"</font>" );</script>14.不同时间段显示不同问候语<script Language="Javascript"><!--var text=""; day = new Date( ); time = day.getHours( );if (( time>=0) && (time <7 ))text="夜猫子,要注意身体哦!"if (( time >= 7 ) && (time <12))text="今天天气……哈哈哈,不去玩吗?"if (( time >= 12) && (time <14))text="午休时间哦,朋友一定是不习惯午睡的吧?!"if (( time >=14) && (time <18))text="下午茶的时间到了,休息一下吧!"if ((time >= 18) && (time <= 22))text="您又来了,可别和MM聊太久哦!"if ((time >= 22) && (time <24))text="很晚了哦,注意休息呀!"document.write(text)//---></script>1. oncontextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键<table border oncontextmenu=return(false)><td>no</table> 可用于Table2. <body onselectstart="return false"> 取消选取、防止复制3. onpaste="return false" 不准粘贴4. oncopy="return false;" oncut="return false;" 防止复制5. <link rel="Shortcut Icon" href="favicon.ico"> IE地址栏前换成自己的图标6. <link rel="Bookmark" href="favicon.ico"> 可以在收藏夹中显示出你的图标7. <input style="ime-mode:disabled"> 关闭输入法8. 永远都会带着框架<script language="javascript"><!-- if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页// --></script>9. 防止被人frame<SCRIPT LANGUAGE=javascript><!-- if (top.location != self.location)top.location=self.location; // --></SCRIPT>10. 网页将不能被另存为<noscript><iframe src=*.html></iframe></noscript>15. 判断上一页的来源javascript: document.referrer17.屏蔽功能键Shift,Alt,Ctrl <script> function look(){ if(event.shiftKey) alert("禁止按Shift键!"); //可以换成ALT CTRL } document.onkeydown=look; </script>19.怎样让表单没有凹凸感?<input type=text style="border:1 solid #000000"> 或<input type=text style="border-left:none; border-right:none; border-top:none; border-bottom: 1 solid #000000"></textarea>20.<div><span>&<layer>的区别?<div>(division)用来定义大段的页面元素,会产生转行<span>用来定义同一行内的元素,跟<div>的唯一区别是不产生转行<layer>是ns的标记,ie不支持,相当于<div>21.让弹出窗口总是在最上面:<body onblur="this.focus();">22.不要滚动条?让竖条没有:<body style="overflow:scroll;overflow-y:hidden"> </body>让横条没有: <body style="overflow:scroll;overflow-x:hidden"> </body>两个都去掉?更简单了<body scroll="no"> </body>23.怎样去掉图片链接点击后,图片周围的虚线?<a href="#" onFocus="this.blur()"><img src="logo.jpg" border=0></a>24.电子邮件处理提交表单<form name="form1" method="post" action="mailt****@***.com" enctype="text/plain"> <input type=submit> </form>25.在打开的子窗口刷新父窗口的代码里如何写?window.opener.location.reload()26.如何设定打开页面的大小<body onload="top.resizeTo(300,200);">打开页面的位置<body onload="top.moveBy(300,200);">35.ENTER键可以让光标移到下一个输入框<input onkeydown="if(event.keyCode==13)event.keyCode=9">1.文本框焦点问题onBlur:当失去输入焦点后产生该事件onFocus:当输入获得焦点后,产生该文件Onchange:当文字值改变时,产生该事件Onselect:当文字加亮后,产生该文件9.状态栏显示该页状态<base onmouseover="window.status='网站建设/' ;return true">46.可以下载文件document.location.href="目标文件"//70.截取小数点后两位var a=3454545.4454545;alert(a.toFixed(2));//82.event.x,event.clientX,event.offsetX区别:x:设置或者是得到鼠标相对于目标事件的父元素的外边界在x坐标上的位置。