一次惊险的javascript经历,汗,现在想想都后怕
在开发一个缴费交易时,先发送查询请求到系统A,系统A返回一个字符串格式的欠费金额,因为是定长的,所以都是前补0,本来需要先做处理的,但是由于查询结果如果是欠费的,客户发起缴费交易时,会送给系统B的格式,与系统A返回的是一样的,因此就原样保存然后上送,可是在系统测试时,却发现了一个奇怪的现象,系统A返回的查询结果中,欠费金额是“00000100”,上送后,却变成“00000064”了,金额是以分为单位的,所以欠费1元的,变成上送缴费时是0.64元了,刚开始一直不得其解,后面才知道这是javascript的默认处理搞的鬼。 程序中将“00000100”作为参数传递给一个函数,在函数中打印出来这个参数的值,已经变成8的平方,64了,所以字符串在javascript中传递时,会默认被转换成整数处理,这就是导致问题的根本原因。这次问题得出的教训是,不要偷懒,必须对数据进行合理的转换后再行处理。
相关文档:
1. 客户端 //主要针对本地IE浏览器访问
<script
language="javascript">
function FileExist()
{
var sfso=new
ActiveXObject("Scripting.FileSystemObject");
var fPath="[The path of the
file]";
if(sfso.FileExists(fP ......
一、功能实现核心:FileSystemObject 对象
要在javascript中实现文件操作功能,主要就是依靠FileSystemobject对象。
二、FileSystemObject编程
使用FileSystemObject 对象进行编程很简单,一般要经过如下的步骤: 创建FileSystemObject对象、应用相关方法、访问对象相关属性 。
(一)创建FileSy ......
引言
JavaScript不是按面向对象的思想设计的程序语言,所以它不具备像现有的面向对象的语言那样的功能,但是面向对象的思想是如此的深入人心,以至于JavaScript也削尖了脑袋“面向对象”。果真,通过一些特殊的处理,JavaScript也具有了基本的面向对象的功能。
......
修改循环的执行方式
for(var i=0;i<element.childNodes.length;i++){
执行代码
}
这种方式每次循环都要取element.childNodes.length的值,应该改为如下的
var n=element.childNodes.length
for(var i=0;i<n;i++){
执行代码
}
2:修改dom操作的次数
dom批量插入一批类似的节点不如先构造一个对象, ......
<body oncontextmenu="return false" onselectstart="return false" ondragstart="return false" onbeforecopy="return false" onmouseup=document.selection.empty() oncopy=document.selection.empty() onselect=document.selection.empty()></body>
讲上面红色显示的插入到网页中就可以实现鼠标右击无效
......