在上传操作中,经常会遇到要求指定上传文件的格式,下面的实例是在客户端通过JavaScript验证上传图片格式为jpg/gif/png
<html>
<head>
<mce:script language="JavaScript" type="text/JavaScript"><!--
var img=null;
function checkPic(picForm){
var location=picForm.pic.value;
if(location==""){
alert("请先选择图片文件");
return false;
}
var point = location.lastIndexOf(".");
var type = location.substr(point);
if(type==".jpg"||type==".gif"||type==".JPG"||type==".GIF"||type==".PNG"||type==".png"){
img=document.createElement("img");
img.src=location;
if(img.fileSize>102400){
alert("图片尺寸请不要大于100KB");
return false;
}else
return true;
}
else{
alert("只能输入jpg或者gif格式的图片");
return false;
}
return true;
}
function changesrc(){
yourpic.src=picForm.pic.value;
}
// --></mce:script> ......
在开发一个缴费交易时,先发送查询请求到系统A,系统A返回一个字符串格式的欠费金额,因为是定长的,所以都是前补0,本来需要先做处理的,但是由于查询结果如果是欠费的,客户发起缴费交易时,会送给系统B的格式,与系统A返回的是一样的,因此就原样保存然后上送,可是在系统测试时,却发现了一个奇怪的现象,系统A返回的查询结果中,欠费金额是“00000100”,上送后,却变成“00000064”了,金额是以分为单位的,所以欠费1元的,变成上送缴费时是0.64元了,刚开始一直不得其解,后面才知道这是javascript的默认处理搞的鬼。 程序中将“00000100”作为参数传递给一个函数,在函数中打印出来这个参数的值,已经变成8的平方,64了,所以字符串在javascript中传递时,会默认被转换成整数处理,这就是导致问题的根本原因。这次问题得出的教训是,不要偷懒,必须对数据进行合理的转换后再行处理。 ......
删除行
<script>
function del(obj)
{
obj.parentNode.parentNode.removeNode(true);
}
</script>
<body>
<table>
<tr>
<td>单元格1</td>
<td><input type=button value="delete this row" onclick="del(this)"></td>
</tr>
<tr>
<td>单元格2</td>
<td><input type=button value="delete this row" onclick="del(this)"></td>
</tr>
<tr>
......
示例:
- - - - - - - - - - - -
<body>
<input type="button" value="create" onclick="createTr();">
<table border='1' id="t" >
</table>
<input type="button" value="提交" onclick="okss();" />
</body>
<script type="text/javascript">
function createTr()
{
var tab = document.getElementById("t");
//create tr
for(var j=0;j<3;j++) {
var tr = tab.insertRow();
&n ......
原文:《Speeding up JavaScript: Working with the DOM》
作者: KeeKim Heng, Google Web Developer
在我们开发互联网富应用(RIA)时,我们经常写一些javascript脚本来修改或者增加页面元素,这些工作最终是DOM——或者说文档对象模型——来完成的,而我们的实现方式会影响到应用的响应速度。
DOM操作会导致浏览器重解析(reflow),这是浏览器的一个决定页面元素如何展现的计算过程。直接修改DOM,修改元素的CSS样式,修改浏览器的窗口大小,都会触发重解析。读取元素的布局属性比如offsetHeithe或者offsetWidth也会触发重解析。重解析需要花费计算时间,因此重解析触发的越少,应用就会越快。
DOM操作通常要不就是修改已经存在的页面上的元素,要不就是创建新的页面元素。下面的4种优化方案覆盖了修改和创建DOM节点两种方式,帮助你减少触发浏览器重解析的次数。
方案一:通过CSS类名切换来修改DOM
这个方案让我们可以一次性修改一个元素和它的子元素的多个样式属性而只触发一次重解析。
需求:
(emu注:原文作者写到这里的时候脑子显然短路了一下,把后面的Out-of-the-flow DOM Manipulation模式要解决的问题给摆到这里来了,不过从示范代码 ......
function addLoadEvent(fun) {
var oldonload = window.onload;
if(typeof(window.onload) != 'function') {
window.onload = fun;
} else {
window.onload = function() {
oldonload();
fun();
}
}
}
//function insertAfter(newElement, targentElement)
function insertAfter(insertedNode, adjacentNode) {
var parent = adjacentNode.parentNode;
if(parent.lastChild == adjacentNode) {
parent.appendChild(insertedNode);
} else {
parent.insertBefore(insertedNode, adjacentNode.nextSibling);
}
}
......