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


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 相关文章推荐
没有document.getElementByName方法
Aug 19 Javascript
javascript中的if语句使用介绍
Nov 20 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
Nov 17 Javascript
微信小程序 生命周期详解
Oct 12 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
Dec 28 Javascript
webpack4之SplitChunksPlugin使用指南
Jun 12 Javascript
JS实现Cookie读、写、删除操作工具类示例
Aug 28 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
Sep 14 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
Jan 24 Javascript
vuex分模块后,实现获取state的值
Jul 26 Javascript
vue iview 隐藏Table组件里的某一列操作
Nov 13 Javascript
ztree+ajax实现文件树下载功能
May 18 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
php 获取mysql数据库信息代码
2009/03/12 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
利用PHP命令行模式采集股票趋势信息
2016/08/09 PHP
PHP实现接收二进制流转换成图片的方法
2017/01/10 PHP
js获取图片长和宽度的代码
2009/11/24 Javascript
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
jQuery之网页换肤实现代码
2011/04/30 Javascript
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
解决vue热替换失效的根本原因
2018/09/19 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
详解webpack-dev-middleware 源码解读
2020/03/23 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
Python环境下搭建属于自己的pip源的教程
2016/05/05 Python
Python3.4 splinter(模拟填写表单)使用方法
2018/10/13 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
python十进制转二进制的详解
2020/02/07 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
Marriott中国:万豪国际酒店查询预订
2016/09/02 全球购物
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
就业自荐书
2013/12/05 职场文书
法律六进活动方案
2014/03/13 职场文书
协议书与合同的区别
2014/04/18 职场文书
保护环境建议书400字
2014/05/13 职场文书
学校安全生产月活动总结
2014/07/05 职场文书
八项规定整改方案
2014/10/01 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
初中英语教学反思范文
2016/02/15 职场文书
「女孩的钓鱼慢活」全新版权绘公布
2022/03/21 日漫
Python闭包的定义和使用方法
2022/04/11 Python