易截截图软件、单文件、免安装、纯绿色、仅160KB

Javascript动态生成表格的性能调优


客户端动态输出table数据并展示表格,是web应用中较为常见的工作。对于循环打印输出tr,td本身是一件非常僵硬和暴力的编程办法,再加上最后绑定元素innerHTML字符流输出,
  系统所消耗的性能代价是非常高昂的,如果我们需要展现的数据非常庞大时,那么代价也是成倍的。然而这种动态输出表格的方法是大多数客户端程序员最常用的方法。那么基于最常用的方法,
  如何才能降低性能成本,改善用户体验,快速安全的显示我们所需要的数据呢?
  我认为从根本上调优需要从两个方面去考虑。
  1:server的数据吐出和client的数据解析。这里涉及的知识点较多,今后再做详细的说明。但是对于较为复杂的xml的数据格式来说,client的解析应该用xpath寻址和dom内置对象相结合的方法,高速定位。
  2:DHTML的优化。包括dom,css,js的优化,也就是MVC(model,
view, control)的优化。
  这里我们用js动态生成一个table, 构建一个3000行,8列的表格,代码分多个版本,便于清晰的比较每个版本不同的性能消耗。
  vision
0.1 【耗时14694ms】
  貌似以下的写法是没有任何错误,但是确是最暴力,效率最低,性能消耗最大的写法。对于大量的数据行和列,用for循环拼接元素字符串,最后innerHTML输出是不可取的。
  3000记录页面加载耗时14694毫秒,近15秒。这样的页面数据加载是近乎灾难的,应该竭力避免。
<html>
<body>
 <div
id="tableDiv"></div>
 <script>
  var maxRow =3000;
  var maxCol = 8;
  var strTbl = "<table
border='1'><tbody>";
  var strTbody = '';
 
  for(var i = 0; i < maxRow; i++){
  strTbody +="<tr>";
   for(var j = 0; j < maxCol; j++){
   strTbody +=
"<td>test</td>";
   }
  strTbody += "</tr>";
  }
  strTbl = strTbody +
"</tbody></table>";
 
  var obj =
document.getElementById("tableDiv");
  obj.innerHTML = strTbl;
 
 </script>
</body>
</html>
 
vision 0.2 【耗时3623ms】
  这个版本的代码有非常大的改进,采用DOM技术动态添加元素,说明在需要处理展现大量数据的情况下,运用DOM快速定位并添加绑定元素的方法,效率远比拼接html元素字符串的方法要高许多。
  整个页面加载完成所耗的时间为3


相关文档:

天气预报 WebService Web JavaScript 调用代码

javascript, webservice, 天气预报
运行演示,请点击这里:>>天气预报 WebService JavaScript Web页面调用代码,转载及使用该代码,请保留作者信息,其它部分您可任意修改。
源代碼:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCT ......

Javascript实现html块语法高亮(搜索后关键字高亮)

dp.SyntaxHighlighter
dp.SyntaxHighlighter,这东西yahoo都在用它,支持多种语言。
只需要将代码放到<textarea>标签内,它就可以自动根据class指定的语言来对textarea内容进行着色,还提供了行号、打印等功能。如:
Xml代码
<TEXTAREA class=java name=code><br/>    // code here ......

《悟透JavaScript》之 甘露模型(新)


在上面的示例中,我们定义了两个语法甘露,一个是Class()函数,一个是New()函数。使用Class()甘露,我们已经可以用非常优雅的格式定义一个类。例如前例中的:
    
var
 Employee 
=
 Class(Person,    
//
派生至Person类
    
{ ......

javascript 提交加密

提供一个简单的例子:
 <HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Key ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号