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


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 相关文章推荐
javascript中利用数组实现的循环队列代码
Jan 24 Javascript
JavaScript 滚轮事件使用说明
Mar 07 Javascript
js自定义事件及事件交互原理概述(一)
Feb 01 Javascript
基于jquery的9行js轻松实现tab控件示例
Oct 12 Javascript
js动态拼接正则表达式的两种方法
Mar 04 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
Mar 19 Javascript
jQuery里filter()函数与find()函数用法分析
Jun 24 Javascript
js中的面向对象入门
Mar 06 Javascript
js+html制作简单日历的方法
Jun 27 Javascript
深入理解Vue.js轻量高效的前端组件化方案
Dec 10 Javascript
javascript系统时间设置操作示例
Jun 17 Javascript
js实现3D旋转相册
Aug 02 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一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
php实现encode64编码类实例
2015/03/24 PHP
php 批量查询搜狗sogou代码分享
2015/05/17 PHP
PHP常用工具类大全附全部代码下载
2015/12/07 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
解析Javascript中大括号“{}”的多义性
2013/12/02 Javascript
jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
2015/08/10 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
python装饰器使用方法实例
2013/11/21 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
python 性能优化方法小结
2017/03/31 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
Python反射用法实例简析
2017/12/22 Python
python 获取当天每个准点时间戳的实例
2018/05/22 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
Django ORM 常用字段与不常用字段汇总
2019/08/09 Python
python输出pdf文档的实例
2020/02/13 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
2020/02/27 Python
Python内置函数及功能简介汇总
2020/10/13 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
大学生职业规划论文
2014/01/11 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书
英文自荐信常用句子
2014/03/26 职场文书
食品安全标语
2014/06/07 职场文书
商务专员岗位职责范本
2014/06/29 职场文书
入党自荐书范文
2015/03/05 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
会议主持词通用版
2019/04/02 职场文书
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers