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


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 相关文章推荐
asp.net下利用js实现返回上一页的实现方法小集
Nov 24 Javascript
理解Javascript_07_理解instanceof实现原理
Oct 15 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
Dec 11 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
Aug 31 Javascript
js调用百度地图及调用百度地图的搜索功能
Sep 07 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
Jun 20 Javascript
深入理解JS正则表达式---分组
Jul 18 Javascript
jQuery简单创建节点的方法
Sep 09 Javascript
javascript深拷贝和浅拷贝详解
Feb 14 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
Apr 28 Javascript
在React 组件中使用Echarts的示例代码
Nov 08 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
May 04 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
探讨file_get_contents与curl效率及稳定性的分析
2013/06/06 PHP
学习js所必须要知道的一些
2007/03/07 Javascript
css图片自适应大小
2007/11/28 Javascript
js 替换
2008/02/19 Javascript
javascript实现的一个带下拉框功能的文本框
2014/05/08 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
在vue-cli脚手架中配置一个vue-router前端路由
2017/07/03 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
Layui数据表格之单元格编辑方式
2019/10/26 Javascript
js判断密码强度的方法
2020/03/18 Javascript
微信小程序绘制半圆(弧形)进度条
2020/11/18 Javascript
vue $router和$route的区别详解
2020/12/02 Vue.js
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
[07:20]2018DOTA2国际邀请赛寻真——逐梦Mineski
2018/08/10 DOTA
Python中的XML库4Suite Server的介绍
2015/04/14 Python
python编程使用协程并发的优缺点
2018/09/20 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
2019/07/28 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
Python 高效编程技巧分享
2020/09/10 Python
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
计算机维护专业推荐信
2014/02/27 职场文书
希特勒的演讲稿
2014/05/23 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
工作检讨书大全
2015/01/26 职场文书
放假通知格式
2015/04/14 职场文书
大学生十八大感想
2015/08/11 职场文书
幼儿园保教工作总结2015
2015/10/15 职场文书
九年级历史教学反思
2016/02/19 职场文书
MySQL 分组查询的优化方法
2021/05/12 MySQL