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


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 相关文章推荐
一个cssQuery对象 javascript脚本实现代码
Jul 21 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
May 07 Javascript
jquery重新播放css动画所遇问题解决
Aug 21 Javascript
让checkbox不选中即将选中的checkbox不选中
Jul 11 Javascript
JS控制弹出新页面窗口位置和大小的方法
Mar 02 Javascript
详解JavaScript逻辑And运算符
Dec 04 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
Sep 02 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
Apr 16 Javascript
Vue防止白屏添加首屏动画的实例
Oct 31 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
Jun 19 Javascript
浅谈node.js中间件有哪些类型
Apr 29 Javascript
JS中如何优雅的使用async await详解
Oct 05 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
收音机指标测试方法及仪器
2021/03/01 无线电
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
php简单实现发送带附件的邮件
2015/06/10 PHP
使用ThinkPHP生成缩略图及显示
2017/04/27 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
2019/03/22 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
2020/03/23 PHP
javascript 函数调用的对象和方法
2010/07/01 Javascript
javascript实现倒计时N秒后网页自动跳转代码
2014/12/11 Javascript
JavaScript中property和attribute的区别详细介绍
2015/03/03 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
2016/09/04 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
node.js缺少mysql模块运行报错的解决方法
2016/11/13 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
2017/05/11 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
javascript实现简易计算器功能
2020/09/23 Javascript
Python中的默认参数详解
2015/06/24 Python
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
python基于递归解决背包问题详解
2019/07/03 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
Python用Jira库来操作Jira
2020/12/28 Python
abstract是什么意思
2012/02/12 面试题
体育教师自荐信范文
2013/12/16 职场文书
大学生村官事迹材料
2014/01/21 职场文书
股权转让协议书范本
2014/04/12 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
教师个人年终总结
2015/02/11 职场文书
创卫工作总结2015
2015/04/22 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS
关于python pygame游戏进行声音添加的技巧
2021/10/24 Python