介绍
这几天忙着赶需求。主要是因为切dvd库,这样出现了要把两个资料库的内容揉在一起显示,显示的时候主要问题发生在后加载(把两块的内容分布显示)上。除了复杂的业务需求外,还有技术细节上的实践。——这里后加载,我们权当翻页(道理一样)。
基本思路
基本思想是:
1)初始的时候,会同时到两个数据源取值。
2)下次取值的时候,会把两个时间点(2001和2006)发到服务端,哪个时间长就取哪段数据。然后重新初始化大时间点数据。
3)如果服务端遇到两个时间点相同,那么就同初始化操作一样,再到两个数据源取数据。
4)如果数据为空,那么把对应时间设置为0000。
处理架构
PHP第一次加载(点击查看大图)
JS初始化(点击查看大图)——其中包括JS滚动加载
PHP后加载(点击查看大图)
JS滚动加载
已在JS初始化图片上。
JS脚本问题
innerHTML在IE下无法赋值
原来习惯于用这种方式累加值——出现“未知的运行时错误”。
- $('tableId').innerHTML += $("tableId").innerHTML + value;
处理方案,也是最终代码——tr和tbody在ie下只有可读属性,不能赋值。
数字属性默认会被排序
- var opus = {
- '2010':'result:2010',
- '2008':'result:2008',
- '2009':'result:2009'
- }
- for(var property in opus){
- console.log(property);
- }
运行时结果
最后解决办法
delete 与 splice
delete 之后,虽然元素被删除了,但是那个删除的位置还存在,只是变成了undefined。
所以使用splice删除元素。
有人提出delete比splice 效率高,我的业务来说没有那么大的数据量splice还是可以接受的。
最终代码
总结
终于算是完成了,一开始设计的时候挺简单,越到后来条件越来越多,代码也越来越大起来。
原文链接:http://www.cnblogs.com/baochuan/archive/2012/08/07/2626549.html#jibensilu
【编辑推荐】