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


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 相关文章推荐
jQuery参数列表集合
Apr 06 Javascript
js数组去重的方法汇总
Jul 29 Javascript
jQuery时间验证和转换为标准格式的时间格式
Mar 06 Javascript
bootstrap select插件封装成Vue2.0组件
Apr 17 Javascript
Bootstrap Table使用整理(三)
Jun 09 Javascript
vue1.0和vue2.0的watch监听事件写法详解
Sep 11 Javascript
微信小程序实现顶部下拉菜单栏
Nov 04 Javascript
Vue 动态添加路由及生成菜单的方法示例
Jun 20 Javascript
微信小程序实现卡片层叠滑动效果
Jun 21 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
Sep 25 Javascript
vue2.x 对象劫持的原理实现
Apr 19 Javascript
详解Vue3中对VDOM的改进
Apr 23 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连接mssql:pdo odbc sql server
2011/07/20 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
php学习笔记之面向对象
2014/11/08 PHP
php获取excel文件数据
2017/04/21 PHP
php实现微信公众号企业转账功能
2018/10/01 PHP
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
jQuery大于号(&gt;)选择器的作用解释
2015/01/13 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
在vue项目中安装使用Mint-UI的方法
2017/12/27 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
初学Python函数的笔记整理
2015/04/07 Python
使用Python对Excel进行读写操作
2017/03/30 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
2018/04/05 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
关于Python 的简单栅格图像边界提取方法
2019/07/05 Python
python中property属性的介绍及其应用详解
2019/08/29 Python
python将三维数组展开成二维数组的实现
2019/11/30 Python
Python3 pickle对象串行化代码实例解析
2020/03/23 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
Spanx塑身衣官网:美国知名内衣品牌
2017/01/11 全球购物
Java如何格式化日期
2012/08/07 面试题
端口镜像是怎么实现的
2014/03/25 面试题
食品营养与检测应届生求职信
2013/11/08 职场文书
简历中自我评价怎么写
2014/02/12 职场文书
自荐信如何制作?
2014/02/21 职场文书
教职工代表大会主持词
2014/04/01 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
全运会口号
2014/06/20 职场文书
文明单位汇报材料
2014/12/24 职场文书
Python 实现Mac 屏幕截图详解
2021/10/05 Python