公司网站用的是帝国CMS
在这个大前提下,所以的操作都是束手束脚的,要充分的个性化,就需要定制,需要开发。
可是帝国有太多的文件,牵扯的地方太多,懒的一点点的去修改。
领导一句话,你就得给我一个列表一个样式,我的天。
而且领导说要能搜索,我的天。
为了进度我只能这么干了。
搜索思路
正好需要搜索的页面,在列表显示了标题和简介(其实还有副标题,我拿来用作别的用途了)。
我的列表页面就是长这个样子。
代码如下:
1 | ... |
我就用js
来搜索这些代码不就行了么。
说干就干
首先,先要准备用js
来获取的所有列表地址,一般列表地址都是有规律的,可以通过分页数据来得到共有几页。
1 | var page = 0; |
对了,分页部分的html
代码如下:
1 | <div class="pages">页次:1/2 每页16 总数20 首页 上一页 <a href='/zsyz/index_2.html'>下一页</a> <a href='/zsyz/index_2.html'>尾页</a> 转到:<select name=select onchange="self.location.href=this.options[this.selectedIndex].value"><option value='/zsyz/index.html' selected>第 1 页</option><option value='/zsyz/index_2.html'>第 2 页</option></select></div> |
比如这里得到了page = 2
。
然后,用$.get
方法依次获取列表页面的html代码,并掐头去尾,只留下列表部分代码。
这里有一个问题,$.get
方法要在完全执行完成后,才能去执行搜索操作,就需要使用jquery
的$.when
方法。
1 | ... |
这里用到的是,先得到需要$.get
的地址列表,然后通过$.when.apply($, getList).done(function(){ do something...;});
来依次执行获取和搜索。
得到的查询结果是nlist
。
最后只要展示出来nlist
就可以了。
注意
- 此方法不适合搜索列表页面不存在的元素
- 比如就不能搜索正文内容。
- 搜索都是在客户端执行。
- 不知道数据多了以后会不会很慢。