客户端脚本中常常出现的一些问题和调试技巧


Posted in Javascript onJanuary 09, 2007

1.出错情况:语法错误
<div id=div1></div>
<script language="javascript">
document.write("never-online";
</script>
解释:上面的示例是一个典型例子,方法名都要用()括起来()里的是参数。
也许有人不屑一顾,但在论坛中。这种错误不在少数。
Tips:这种问题解决起来比较简单,一般都可以解决。

2.出错情况:引号用法不正确
<script>
s="alert("never-online")";
</script>
解释:在javascript或是vbscript的编程中,引号出错的机率是很大的,不管是有多丰富的编程经验,遇到大量的字符串拼接,或者是一不小心的敲错'("),都会出现“语法错误”或者是“缺少'”。
Tips:在进行大量的字符拼接时,需要注意引号的转义用法。如上面的就可以写成:s="alert(\"never-online\")";或者s='alert("never-online")';
相关链接:js技巧--转义符"\"的妙用 - http://blog.csdn.net/bluedestiny/archive/2006/03/15/625061.aspx

3.出错情况:未知软性错误

<script language="javascript">
cntMax=100;
div=document.createElement("DIV");
document.body.appendChild(div);
var myFun=function() {
for(var i=0;i<cntMax;i++);
div.innerHTML+="<b>i: " +i+ "</b><br/>";
div.innerHtml+="http://www.never-online.net";
}
myFun();
</script>

运行出来,没有提示错误,这给人一个错觉,像类似这种软性错误是比较难找的。
所以平常写程序,必须细心。
Tips:编程时应该注意自己的习惯,像在for(var i=0;i<cntMax;i++);这里,分号如果用了{来括起来,这种情况就完全可以避免,看SDK文档时,要仔细阅读,大小写出错一般都会“对象没有此方法”之类的提示,但在脚本中,对象可以动态的添加方法和属性。所以,上面的div.innerHtml="http://www.never-online.net"不会出错。而div的innerHTML又没有得到值。

4.出错情况:对语言的理解错误
最常见的可能算是this关键字了,这里就举一个例子来说明
this语义:指向当前对象的指针。
例子:
<script>
function a() {
this.m = "never-online";
this.f = function() {
alert(this.m);
}
}
var b = new a();
b.f();
</script>
相信上面这个例子,很多人都理解。this指向的是a()
再看下面这个例子:
<div id=div1>div container - onmouseover handle</div>
<script>
function a() {
this.m = val = 'never-online';
var div = document.getElementById("div1");
div.onmouseover=function() {
alert(this.m);
}
alert(this.m);
}
a();
</script>
这一个例子,有些兄弟可能就不能理解了,仔细看看之后,也可以预测输出结果。
解释:this.m = val = 'never-online'这一句是赋值,其中的this.m中的this指向的是当前对象a();
而div.onmouseover里的this指的对象是document.getElementById("div1")这个对象,(因为div并不属于a对象)即相当于把代码写在这里:
<div id=div1 onmouseover="alert(this.m)">div container - onmouseover handle</div>
因此在div.onmouseover的function里this.m出现undefined并不奇怪。 

Javascript 相关文章推荐
js验证表单第二部分
Nov 25 Javascript
jQuery 表单验证扩展代码(一)
Oct 11 Javascript
理解Javascript_02_理解undefined和null
Oct 11 Javascript
2014 HTML5/CSS3热门动画特效TOP10
Dec 07 Javascript
ES6新特性四:变量的解构赋值实例
Apr 21 Javascript
Angular2搜索和重置按钮过场动画
May 24 Javascript
深入理解angular2启动项目步骤
Jul 15 Javascript
探索Vue高阶组件的使用
Jan 08 Javascript
理解Koa2中的async&amp;await的用法
Feb 05 Javascript
this.$toast() 了解一下?
Apr 18 Javascript
ES6基础之字符串和函数的拓展详解
Aug 22 Javascript
node使用async_hooks模块进行请求追踪
Jan 28 Javascript
Javascript miscellanea -display data real time, using window.status
Jan 09 #Javascript
Javascript - HTML的request类
Jan 09 #Javascript
贴一个在Mozilla中常用的Javascript代码
Jan 09 #Javascript
Javascript-Mozilla和IE中的一个函数直接量的问题
Jan 09 #Javascript
Javascript调试工具(下载)
Jan 09 #Javascript
如何在Mozilla Gecko 用Javascript加载XSL
Jan 09 #Javascript
如何让动态插入的javascript脚本代码跑起来。
Jan 09 #Javascript
You might like
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
php中json_decode()和json_encode()的使用方法
2012/06/04 PHP
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
Jsonp 跨域的原理以及Jquery的解决方案
2011/06/27 Javascript
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
jQuery简单实现隐藏以及显示特效
2015/02/26 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
JavaScript中的函数嵌套使用
2015/06/04 Javascript
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
Cordova(ionic)项目实现双击返回键退出应用
2019/09/17 Javascript
详解用js代码触发dom事件的实现方案
2020/06/10 Javascript
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
布同 统计英文单词的个数的python代码
2011/03/13 Python
python读写二进制文件的方法
2015/05/09 Python
Python线性回归实战分析
2018/02/01 Python
Python实现的购物车功能示例
2018/02/11 Python
django用户登录和注销的实现方法
2018/07/16 Python
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
2020/01/13 Python
Python获取android设备cpu和内存占用情况
2020/11/15 Python
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
物流管理应届生求职信
2013/11/07 职场文书
门诊挂号室室长岗位职责
2013/11/27 职场文书
小学教师师德反思
2014/02/03 职场文书
五一劳动节活动记录
2014/03/23 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书
2015年幼师工作总结
2015/04/28 职场文书
CocosCreator入门教程之网络通信
2021/04/16 Javascript