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


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 相关文章推荐
如何阻止复制剪切和粘贴事件为了表单内容的安全
May 23 Javascript
javascript的parseFloat()方法精度问题探讨
Nov 26 Javascript
javascript框架设计读书笔记之模块加载系统
Dec 02 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
Sep 06 Javascript
JS代码防止SQL注入的方法(超简单)
Apr 12 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
Jun 27 Javascript
适用于手机端的jQuery图片滑块动画
Dec 09 Javascript
jQuery树控件zTree使用方法详解(一)
Feb 28 Javascript
javascript DOM的详解及实例代码
Mar 06 Javascript
详解基于Wepy开发小程序插件(推荐)
Aug 01 Javascript
你不可不知的Vue.js列表渲染详解
Oct 01 Javascript
通过实例了解Render Props回调地狱解决方案
Nov 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
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
php JWT在web端中的使用方法教程
2018/09/06 PHP
php测试kafka项目示例
2020/02/06 PHP
对YUI扩展的Gird组件 Part-1
2007/03/10 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
JS实现获取当前URL和来源URL的方法
2016/08/24 Javascript
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
Vue form 表单提交+ajax异步请求+分页效果
2017/04/22 Javascript
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
基于js中this和event 的区别(详解)
2017/10/24 Javascript
layer弹出层父子页面事件相互调用方法
2018/08/17 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
2018/10/08 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
vue实现表格过滤功能
2019/09/27 Javascript
Vue的全局过滤器和私有过滤器的实现
2020/04/20 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
python去除字符串中的换行符
2017/10/11 Python
python实现排序算法解析
2018/09/08 Python
django中的图片验证码功能
2019/09/18 Python
Django异步任务线程池实现原理
2019/12/17 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
10款最佳Python开发工具推荐,每一款都是神器
2020/10/15 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
2014自主招生自荐信策略
2014/01/27 职场文书
小学生三分钟演讲稿
2014/08/18 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
学校食品安全责任书
2015/01/29 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android