function rowSortFun(s_id){
$("#div"+s_id).show();
}
$("#div"+s_id).show();
}
解决方案 »
- 下面这段jquery 代码 有什么问题呢
- jquery autocomplet实现类似百度google的搜索如2345.com 或hao123.com的百度搜索框
- 求助。。VML结合javaScript画专题图
- 如果将Excel的内容导出到页面的table中(急)
- windows.open()是否可以跳转到当前窗口中的一个框架中?急,在线等
- ──━─━─━── Opera中如何触发事件? 在线等待 ──━─━─━──
- js alert 对象 与遍历 的 问题 求解答
- 关于获取鼠标坐标的问题
- 如何给网页增加弹出“通知”功能?
- 怎么判断一个链接是否存在
- 如何用javascript实现每隔几秒中把字符串写入表格中
- 求JS
<textarea id="textarea1">
</textarea>
<script language=javascript>
var tempStr="abcdefghijklmn"
var a=new Array();
for(var i=0;i<500;i++)
{
a[i]="<tr><td>"+tempStr.charAt(Math.floor(Math.random()*14))+"</td><td>"+(Math.floor(Math.random()*50))+"</td></tr>"
}
document.getElementById("textarea1").value=(a.join("\r\n"))
</script>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JK:支持民族工业,尽量少买X货</title>
<script language="javascript" srccccc="CommonJS_RowSort.js">
function rowSortFun(tdObj,sortType){
var d1=new Date();
var currentColumnIndex=tdObj.cellIndex;
var currentTbody=tdObj.parentNode.parentNode;
var rowsArray=new Array();
var objTd=null;
for( var i=1;i<currentTbody.rows.length;i++){
objTr=currentTbody.rows[i]
rowsArray[i-1]=new Array(objTr.cells[currentColumnIndex].innerHTML,objTr);
}
rowsArray.sort(getSortFun(sortType));
for(var i=0;i<rowsArray.length;i++){
currentTbody.appendChild(rowsArray[i][1]);
}
alert("行数"+rowsArray.length+";所花毫秒数"+(new Date()-d1));
}function getSortFun(sortType){
if("stringTd"==sortType){
return function (trObj1,trObj2){return (trObj2[0].toUpperCase()>trObj1[0].toUpperCase())?1:-1}
}
else if("numberTd"==sortType){
return function (trObj1,trObj2) { return ((parseInt(trObj2[0])-parseInt(trObj1[0]))>0)?1:-1}
}
}</script>
<style>
.headerTr{background-color:#cccccc;}
</style>
</head><body>
<div style="font-size:10pt;">
注1:用法:需要排序的字段头里:<td columnContentType="Text" onclick="rowSortFun(this);"> 。 <br/>
注2:鉴于很多提出要求前台排序的人,其实并不是真的需要前台排序,所以强列建议慎用前台排序。 <br/>
<br/> <br/>
注:本页面仅在IE6/FireFox1.5下测试过。其它浏览器或其它版本未经测试。<br/>
注-----:JK:<a href="mailTo:[email protected]?subject=RowSortSample">[email protected]</a><br/>
<hr/>
</div><table border="1" width="100%" >
<tr class="headerTr">
<td columnContentType="Text" onclick="rowSortFun(this,'stringTd');" > 字符串或其它</td>
<td columnContentType="Number" onclick="rowSortFun(this,'numberTd');" >数字</td>
<td >输入框(不需要排序)</td>
</tr>
<tr><td>g</td><td>37</td></tr>
<tr><td>i</td><td>17</td></tr>
<tr><td>l</td><td>4</td></tr>
<tr><td>g</td><td>37</td></tr>
<tr><td>e</td><td>6</td></tr>
<tr><td>n</td><td>48</td></tr>
<tr><td>e</td><td>32</td></tr>
<tr><td>i</td><td>29</td></tr>
<tr><td>f</td><td>34</td></tr>
<tr><td>f</td><td>15</td></tr>
<tr><td>b</td><td>45</td></tr>
<tr><td>g</td><td>15</td></tr>
<tr><td>n</td><td>38</td></tr>
<tr><td>a</td><td>7</td></tr>
<tr><td>b</td><td>47</td></tr>
<tr><td>n</td><td>28</td></tr>
<tr><td>f</td><td>11</td></tr>
<tr><td>i</td><td>47</td></tr>
<tr><td>n</td><td>22</td></tr>
<tr><td>e</td><td>25</td></tr>
<tr><td>n</td><td>40</td></tr>
<tr><td>l</td><td>44</td></tr>
<tr><td>h</td><td>6</td></tr>
<tr><td>h</td><td>31</td></tr>
<tr><td>g</td><td>32</td></tr>
<tr><td>a</td><td>39</td></tr>
<tr><td>j</td><td>25</td></tr>
<tr><td>a</td><td>8</td></tr>
<tr><td>h</td><td>49</td></tr>
<tr><td>l</td><td>25</td></tr>
<tr><td>h</td><td>26</td></tr>
<tr><td>l</td><td>35</td></tr>
<tr><td>k</td><td>9</td></tr>
<tr><td>a</td><td>25</td></tr>
<tr><td>m</td><td>5</td></tr>
<tr><td>g</td><td>30</td></tr>
<tr><td>m</td><td>2</td></tr>
<tr><td>k</td><td>14</td></tr>
<tr><td>n</td><td>34</td></tr>
<tr><td>f</td><td>11</td></tr>
<tr><td>b</td><td>40</td></tr>
<tr><td>i</td><td>45</td></tr>
<tr><td>b</td><td>21</td></tr>
<tr><td>i</td><td>22</td></tr>
<tr><td>i</td><td>15</td></tr>
<tr><td>g</td><td>7</td></tr>
<tr><td>f</td><td>27</td></tr>
<tr><td>j</td><td>38</td></tr>
<tr><td>h</td><td>19</td></tr>
<tr><td>b</td><td>39</td></tr>
<tr><td>c</td><td>43</td></tr>
<tr><td>n</td><td>47</td></tr>
<tr><td>h</td><td>6</td></tr>
<tr><td>d</td><td>40</td></tr>
<tr><td>l</td><td>42</td></tr>
<tr><td>j</td><td>0</td></tr>
<tr><td>n</td><td>47</td></tr>
<tr><td>c</td><td>47</td></tr>
<tr><td>f</td><td>19</td></tr>
<tr><td>f</td><td>2</td></tr>
<tr><td>i</td><td>18</td></tr>
<tr><td>k</td><td>39</td></tr>
<tr><td>k</td><td>15</td></tr>
<tr><td>n</td><td>11</td></tr>
<tr><td>c</td><td>4</td></tr>
<tr><td>n</td><td>2</td></tr>
<tr><td>l</td><td>9</td></tr>
<tr><td>g</td><td>48</td></tr>
<tr><td>h</td><td>31</td></tr>
<tr><td>i</td><td>4</td></tr>
<tr><td>n</td><td>10</td></tr>
<tr><td>l</td><td>45</td></tr>
<tr><td>j</td><td>29</td></tr>
<tr><td>f</td><td>27</td></tr>
<tr><td>h</td><td>40</td></tr>
<tr><td>f</td><td>22</td></tr>
<tr><td>j</td><td>31</td></tr>
<tr><td>e</td><td>39</td></tr>
<tr><td>l</td><td>34</td></tr>
<tr><td>l</td><td>47</td></tr>
<tr><td>d</td><td>13</td></tr>
<tr><td>b</td><td>30</td></tr>
<tr><td>k</td><td>12</td></tr>
<tr><td>h</td><td>31</td></tr>
<tr><td>h</td><td>16</td></tr>
<tr><td>l</td><td>4</td></tr>
<tr><td>l</td><td>20</td></tr>
<tr><td>l</td><td>0</td></tr>
<tr><td>j</td><td>41</td></tr>
<tr><td>l</td><td>45</td></tr>
<tr><td>i</td><td>35</td></tr>
<tr><td>k</td><td>18</td></tr>
<tr><td>m</td><td>5</td></tr>
<tr><td>m</td><td>16</td></tr>
<tr><td>l</td><td>43</td></tr>
<tr><td>n</td><td>23</td></tr>
<tr><td>k</td><td>5</td></tr>
<tr><td>m</td><td>30</td></tr>
<tr><td>j</td><td>16</td></tr>
<tr><td>l</td><td>27</td></tr>
<tr><td>i</td><td>34</td></tr>
<tr><td>f</td><td>32</td></tr>
<tr><td>b</td><td>14</td></tr>
<tr><td>i</td><td>24</td></tr>
<tr><td>g</td><td>17</td></tr>
<tr><td>m</td><td>6</td></tr>
<tr><td>d</td><td>27</td></tr>
<tr><td>a</td><td>25</td></tr>
<tr><td>j</td><td>11</td></tr>
<tr><td>h</td><td>22</td></tr>
<tr><td>d</td><td>49</td></tr>
<tr><td>n</td><td>35</td></tr>
<tr><td>c</td><td>35</td></tr>
<tr><td>a</td><td>4</td></tr>
<tr><td>j</td><td>22</td></tr>
<tr><td>l</td><td>28</td></tr>
<tr><td>b</td><td>8</td></tr>
<tr><td>b</td><td>21</td></tr>
<tr><td>f</td><td>17</td></tr>
<tr><td>e</td><td>0</td></tr>
<tr><td>m</td><td>45</td></tr>
<tr><td>d</td><td>0</td></tr>
<tr><td>n</td><td>31</td></tr>
<tr><td>h</td><td>36</td></tr>
<tr><td>f</td><td>3</td></tr>
<tr><td>l</td><td>33</td></tr>
<tr><td>b</td><td>16</td></tr>
<tr><td>m</td><td>44</td></tr>
<tr><td>n</td><td>4</td></tr>
<tr><td>c</td><td>15</td></tr>
<tr><td>i</td><td>12</td></tr>
<tr><td>n</td><td>18</td></tr>
<tr><td>a</td><td>11</td></tr>
<tr><td>m</td><td>2</td></tr>
<tr><td>h</td><td>23</td></tr>
<tr><td>f</td><td>4</td></tr>
<tr><td>m</td><td>41</td></tr>
<tr><td>j</td><td>46</td></tr>
<tr><td>n</td><td>24</td></tr>
<tr><td>i</td><td>13</td></tr>
<tr><td>j</td><td>31</td></tr>
<tr><td>f</td><td>36</td></tr>
<tr><td>i</td><td>28</td></tr>
<tr><td>f</td><td>29</td></tr>
<tr><td>i</td><td>18</td></tr>
<tr><td>a</td><td>14</td></tr>
<tr><td>f</td><td>7</td></tr>
<tr><td>f</td><td>23</td></tr>
<tr><td>h</td><td>11</td></tr>
<tr><td>g</td><td>14</td></tr>
<tr><td>c</td><td>38</td></tr>
<tr><td>n</td><td>49</td></tr>
<tr><td>d</td><td>45</td></tr>
<tr><td>b</td><td>47</td></tr>
<tr><td>f</td><td>36</td></tr>
<tr><td>i</td><td>23</td></tr>
<tr><td>c</td><td>33</td></tr>
<tr><td>g</td><td>25</td></tr>
<tr><td>a</td><td>17</td></tr>
<tr><td>e</td><td>11</td></tr>
<tr><td>f</td><td>13</td></tr>
<tr><td>h</td><td>27</td></tr>
<tr><td>a</td><td>33</td></tr>
<tr><td>g</td><td>19</td></tr>
<tr><td>n</td><td>34</td></tr>
<tr><td>h</td><td>45</td></tr>
<tr><td>b</td><td>44</td></tr>
<tr><td>g</td><td>34</td></tr>
<tr><td>b</td><td>17</td></tr>
<tr><td>i</td><td>49</td></tr>
<tr><td>l</td><td>22</td></tr>
<tr><td>g</td><td>25</td></tr>
<tr><td>d</td><td>13</td></tr>
<tr><td>l</td><td>8</td></tr>
<tr><td>f</td><td>33</td></tr>
<tr><td>j</td><td>41</td></tr>
<tr><td>f</td><td>12</td></tr>
<tr><td>a</td><td>6</td></tr>
<tr><td>i</td><td>11</td></tr>
<tr><td>k</td><td>0</td></tr>
<tr><td>j</td><td>19</td></tr>
<tr><td>b</td><td>20</td></tr>
<tr><td>n</td><td>7</td></tr>
<tr><td>k</td><td>38</td></tr>
<tr><td>e</td><td>13</td></tr>
<tr><td>j</td><td>10</td></tr>
<tr><td>h</td><td>18</td></tr>
<tr><td>f</td><td>7</td></tr>
<tr><td>a</td><td>10</td></tr>
<tr><td>m</td><td>16</td></tr>
<tr><td>h</td><td>5</td></tr>
<tr><td>h</td><td>18</td></tr>
<tr><td>j</td><td>23</td></tr>
<tr><td>b</td><td>22</td></tr>
<tr><td>n</td><td>10</td></tr>
<tr><td>m</td><td>0</td></tr>
<tr><td>h</td><td>3</td></tr>
<tr><td>m</td><td>24</td></tr>
<tr><td>n</td><td>43</td></tr>
<tr><td>a</td><td>25</td></tr>
<tr><td>j</td><td>29</td></tr>
<tr><td>n</td><td>4</td></tr>
<tr><td>m</td><td>29</td></tr>
<tr><td>e</td><td>42</td></tr>
<tr><td>f</td><td>9</td></tr>
<tr><td>g</td><td>18</td></tr>
<tr><td>m</td><td>12</td></tr>
<tr><td>i</td><td>37</td></tr>
<tr><td>a</td><td>36</td></tr>
<tr><td>c</td><td>16</td></tr>
<tr><td>h</td><td>37</td></tr>
<tr><td>e</td><td>8</td></tr>
<tr><td>m</td><td>26</td></tr>
<tr><td>g</td><td>43</td></tr>
<tr><td>n</td><td>30</td></tr>
<tr><td>h</td><td>40</td></tr>
<tr><td>m</td><td>6</td></tr>
<tr><td>k</td><td>46</td></tr>
<tr><td>i</td><td>17</td></tr>
<tr><td>a</td><td>30</td></tr>
<tr><td>c</td><td>32</td></tr>
<tr><td>k</td><td>26</td></tr>
<tr><td>n</td><td>33</td></tr>
<tr><td>n</td><td>39</td></tr>
<tr><td>i</td><td>40</td></tr>
<tr><td>e</td><td>33</td></tr>
<tr><td>j</td><td>31</td></tr>
<tr><td>e</td><td>39</td></tr>
<tr><td>g</td><td>7</td></tr>
<tr><td>f</td><td>3</td></tr>
<tr><td>d</td><td>20</td></tr>
<tr><td>f</td><td>7</td></tr>
<tr><td>h</td><td>8</td></tr>
<tr><td>a</td><td>29</td></tr>
<tr><td>j</td><td>30</td></tr>
<tr><td>l</td><td>8</td></tr>
<tr><td>a</td><td>46</td></tr>
<tr><td>b</td><td>34</td></tr>
<tr><td>i</td><td>25</td></tr>
<tr><td>e</td><td>3</td></tr>
<tr><td>l</td><td>39</td></tr>
<tr><td>i</td><td>4</td></tr>
<tr><td>l</td><td>22</td></tr>
<tr><td>l</td><td>31</td></tr>
<tr><td>f</td><td>4</td></tr>
<tr><td>k</td><td>38</td></tr>
<tr><td>m</td><td>48</td></tr>
<tr><td>a</td><td>43</td></tr>
<tr><td>a</td><td>47</td></tr>
<tr><td>c</td><td>36</td></tr>
<tr><td>l</td><td>2</td></tr>
<tr><td>c</td><td>9</td></tr>
<tr><td>f</td><td>35</td></tr>
<tr><td>f</td><td>14</td></tr>
<tr><td>m</td><td>15</td></tr>
<tr><td>n</td><td>39</td></tr>
<tr><td>n</td><td>19</td></tr>
<tr><td>f</td><td>45</td></tr>
<tr><td>a</td><td>19</td></tr>
<tr><td>d</td><td>27</td></tr>
<tr><td>i</td><td>13</td></tr>
<tr><td>a</td><td>27</td></tr>
<tr><td>i</td><td>49</td></tr>
<tr><td>g</td><td>33</td></tr>
<tr><td>n</td><td>38</td></tr>
<tr><td>n</td><td>15</td></tr>
<tr><td>d</td><td>25</td></tr>
<tr><td>n</td><td>30</td></tr>
<tr><td>e</td><td>39</td></tr>
<tr><td>l</td><td>38</td></tr>
<tr><td>k</td><td>10</td></tr>
<tr><td>a</td><td>5</td></tr>
<tr><td>a</td><td>22</td></tr>
<tr><td>h</td><td>10</td></tr>
<tr><td>g</td><td>3</td></tr>
<tr><td>m</td><td>36</td></tr>
<tr><td>m</td><td>40</td></tr>
<tr><td>h</td><td>42</td></tr>
<tr><td>j</td><td>3</td></tr>
<tr><td>h</td><td>25</td></tr>
<tr><td>k</td><td>0</td></tr>
<tr><td>g</td><td>21</td></tr>
<tr><td>n</td><td>24</td></tr>
<tr><td>g</td><td>14</td></tr>
<tr><td>f</td><td>2</td></tr>
<tr><td>d</td><td>4</td></tr>
<tr><td>e</td><td>13</td></tr>
<tr><td>l</td><td>28</td></tr>
<tr><td>e</td><td>42</td></tr>
<tr><td>e</td><td>14</td></tr>
<tr><td>j</td><td>41</td></tr>
<tr><td>c</td><td>39</td></tr>
<tr><td>g</td><td>33</td></tr>
<tr><td>i</td><td>4</td></tr>
<tr><td>d</td><td>37</td></tr>
<tr><td>l</td><td>34</td></tr>
<tr><td>g</td><td>36</td></tr>
<tr><td>f</td><td>10</td></tr>
<tr><td>a</td><td>2</td></tr>
<tr><td>m</td><td>2</td></tr>
<tr><td>a</td><td>33</td></tr>
<tr><td>c</td><td>26</td></tr>
<tr><td>n</td><td>11</td></tr>
<tr><td>n</td><td>40</td></tr>
<tr><td>h</td><td>21</td></tr>
<tr><td>c</td><td>8</td></tr>
<tr><td>a</td><td>20</td></tr>
<tr><td>l</td><td>21</td></tr>
<tr><td>i</td><td>9</td></tr>
<tr><td>h</td><td>31</td></tr>
<tr><td>e</td><td>8</td></tr>
<tr><td>b</td><td>8</td></tr>
<tr><td>h</td><td>5</td></tr>
<tr><td>m</td><td>40</td></tr>
<tr><td>e</td><td>33</td></tr>
<tr><td>i</td><td>33</td></tr>
<tr><td>d</td><td>40</td></tr>
<tr><td>m</td><td>14</td></tr>
<tr><td>c</td><td>26</td></tr>
<tr><td>m</td><td>17</td></tr>
<tr><td>f</td><td>35</td></tr>
<tr><td>f</td><td>23</td></tr>
<tr><td>n</td><td>5</td></tr>
<tr><td>m</td><td>23</td></tr>
<tr><td>j</td><td>10</td></tr>
<tr><td>n</td><td>3</td></tr>
<tr><td>j</td><td>10</td></tr>
<tr><td>i</td><td>41</td></tr>
<tr><td>l</td><td>23</td></tr>
<tr><td>l</td><td>18</td></tr>
<tr><td>b</td><td>20</td></tr>
<tr><td>h</td><td>30</td></tr>
<tr><td>g</td><td>16</td></tr>
<tr><td>e</td><td>16</td></tr>
<tr><td>j</td><td>37</td></tr>
<tr><td>j</td><td>33</td></tr>
<tr><td>f</td><td>18</td></tr>
<tr><td>j</td><td>46</td></tr>
<tr><td>m</td><td>15</td></tr>
<tr><td>a</td><td>13</td></tr>
<tr><td>f</td><td>16</td></tr>
<tr><td>g</td><td>41</td></tr>
<tr><td>i</td><td>11</td></tr>
<tr><td>k</td><td>24</td></tr>
<tr><td>c</td><td>9</td></tr>
<tr><td>g</td><td>41</td></tr>
<tr><td>k</td><td>30</td></tr>
<tr><td>i</td><td>31</td></tr>
<tr><td>j</td><td>40</td></tr>
<tr><td>a</td><td>15</td></tr>
<tr><td>h</td><td>14</td></tr>
<tr><td>k</td><td>5</td></tr>
<tr><td>i</td><td>47</td></tr>
<tr><td>m</td><td>37</td></tr>
<tr><td>m</td><td>27</td></tr>
<tr><td>l</td><td>6</td></tr>
<tr><td>l</td><td>0</td></tr>
<tr><td>g</td><td>8</td></tr>
<tr><td>g</td><td>43</td></tr>
<tr><td>a</td><td>41</td></tr>
<tr><td>m</td><td>39</td></tr>
<tr><td>c</td><td>32</td></tr>
<tr><td>l</td><td>31</td></tr>
<tr><td>m</td><td>30</td></tr>
<tr><td>b</td><td>3</td></tr>
<tr><td>c</td><td>41</td></tr>
<tr><td>j</td><td>22</td></tr>
<tr><td>b</td><td>5</td></tr>
<tr><td>b</td><td>0</td></tr>
<tr><td>a</td><td>34</td></tr>
<tr><td>f</td><td>1</td></tr>
<tr><td>l</td><td>46</td></tr>
<tr><td>h</td><td>21</td></tr>
<tr><td>i</td><td>3</td></tr>
<tr><td>d</td><td>15</td></tr>
<tr><td>f</td><td>45</td></tr>
<tr><td>d</td><td>30</td></tr>
<tr><td>d</td><td>37</td></tr>
<tr><td>c</td><td>2</td></tr>
<tr><td>g</td><td>35</td></tr>
<tr><td>c</td><td>6</td></tr>
<tr><td>f</td><td>5</td></tr>
<tr><td>j</td><td>0</td></tr>
<tr><td>d</td><td>8</td></tr>
<tr><td>d</td><td>42</td></tr>
<tr><td>m</td><td>31</td></tr>
<tr><td>d</td><td>24</td></tr>
<tr><td>h</td><td>16</td></tr>
<tr><td>f</td><td>12</td></tr>
<tr><td>n</td><td>37</td></tr>
<tr><td>j</td><td>49</td></tr>
<tr><td>a</td><td>11</td></tr>
<tr><td>c</td><td>20</td></tr>
<tr><td>b</td><td>39</td></tr>
<tr><td>f</td><td>49</td></tr>
<tr><td>g</td><td>5</td></tr>
<tr><td>m</td><td>22</td></tr>
<tr><td>b</td><td>5</td></tr>
<tr><td>e</td><td>22</td></tr>
<tr><td>j</td><td>15</td></tr>
<tr><td>k</td><td>28</td></tr>
<tr><td>f</td><td>34</td></tr>
<tr><td>k</td><td>8</td></tr>
<tr><td>k</td><td>0</td></tr>
<tr><td>b</td><td>22</td></tr>
<tr><td>i</td><td>25</td></tr>
<tr><td>k</td><td>15</td></tr>
<tr><td>k</td><td>42</td></tr>
<tr><td>g</td><td>49</td></tr>
<tr><td>g</td><td>40</td></tr>
<tr><td>g</td><td>42</td></tr>
<tr><td>n</td><td>0</td></tr>
<tr><td>k</td><td>30</td></tr>
<tr><td>d</td><td>46</td></tr>
<tr><td>l</td><td>20</td></tr>
<tr><td>h</td><td>49</td></tr>
<tr><td>b</td><td>23</td></tr>
<tr><td>m</td><td>14</td></tr>
<tr><td>l</td><td>2</td></tr>
<tr><td>a</td><td>21</td></tr>
<tr><td>g</td><td>29</td></tr>
<tr><td>c</td><td>33</td></tr>
<tr><td>b</td><td>41</td></tr>
<tr><td>a</td><td>42</td></tr>
<tr><td>n</td><td>16</td></tr>
<tr><td>b</td><td>1</td></tr>
<tr><td>n</td><td>7</td></tr>
<tr><td>b</td><td>41</td></tr>
<tr><td>k</td><td>1</td></tr>
<tr><td>j</td><td>22</td></tr>
<tr><td>m</td><td>22</td></tr>
<tr><td>h</td><td>3</td></tr>
<tr><td>h</td><td>37</td></tr>
<tr><td>n</td><td>34</td></tr>
<tr><td>a</td><td>27</td></tr>
<tr><td>i</td><td>31</td></tr>
<tr><td>b</td><td>12</td></tr>
<tr><td>a</td><td>42</td></tr>
<tr><td>d</td><td>29</td></tr>
<tr><td>k</td><td>48</td></tr>
<tr><td>d</td><td>38</td></tr>
<tr><td>c</td><td>47</td></tr>
<tr><td>m</td><td>38</td></tr>
<tr><td>g</td><td>33</td></tr>
<tr><td>e</td><td>4</td></tr>
<tr><td>m</td><td>10</td></tr>
<tr><td>g</td><td>49</td></tr>
<tr><td>i</td><td>6</td></tr>
<tr><td>a</td><td>12</td></tr>
<tr><td>b</td><td>35</td></tr>
<tr><td>m</td><td>4</td></tr>
<tr><td>f</td><td>14</td></tr>
<tr><td>j</td><td>34</td></tr>
<tr><td>c</td><td>28</td></tr>
<tr><td>h</td><td>35</td></tr>
<tr><td>m</td><td>27</td></tr>
<tr><td>e</td><td>24</td></tr>
<tr><td>l</td><td>32</td></tr>
<tr><td>g</td><td>16</td></tr>
<tr><td>k</td><td>10</td></tr>
<tr><td>m</td><td>21</td></tr>
<tr><td>j</td><td>27</td></tr>
<tr><td>f</td><td>26</td></tr>
<tr><td>k</td><td>4</td></tr>
<tr><td>c</td><td>36</td></tr>
<tr><td>l</td><td>31</td></tr>
<tr><td>g</td><td>17</td></tr>
<tr><td>c</td><td>10</td></tr>
<tr><td>n</td><td>41</td></tr>
<tr><td>m</td><td>46</td></tr>
<tr><td>f</td><td>9</td></tr>
<tr><td>b</td><td>35</td></tr>
<tr><td>l</td><td>18</td></tr>
<tr><td>k</td><td>21</td></tr>
<tr><td>k</td><td>40</td></tr>
<tr><td>l</td><td>24</td></tr>
<tr><td>n</td><td>26</td></tr>
<tr><td>d</td><td>5</td></tr>
<tr><td>g</td><td>7</td></tr>
<tr><td>e</td><td>45</td></tr>
<tr><td>f</td><td>7</td></tr>
<tr><td>e</td><td>21</td></tr>
<tr><td>d</td><td>20</td></tr>
<tr><td>e</td><td>39</td></tr>
<tr><td>d</td><td>19</td></tr>
<tr><td>f</td><td>31</td></tr>
<tr><td>h</td><td>6</td></tr>
<tr><td>e</td><td>40</td></tr>
<tr><td>a</td><td>44</td></tr>
<tr><td>g</td><td>28</td></tr>
<tr><td>g</td><td>25</td></tr>
<tr><td>j</td><td>14</td></tr>
<tr><td>d</td><td>24</td></tr>
<tr><td>h</td><td>14</td></tr>
<tr><td>h</td><td>11</td></tr>
<tr><td>g</td><td>34</td></tr>
<tr><td>b</td><td>15</td></tr>
<tr><td>n</td><td>13</td></tr>
</table>
</body></html>
var sortIsAsc=(rowSortImg.src.indexOf("up.gif")>-1);
if("Number"==tdObj.columnContentType && sortIsAsc){
return function (trObj1,trObj2) {return trObj1.innerHTML-trObj2.innerHTML;}
}
else if("Number"==tdObj.columnContentType && !sortIsAsc){
return function (trObj1,trObj2) { return trObj2.innerHTML-trObj1.innerHTML;}
}
else if(sortIsAsc){
return function (trObj1,trObj2) { return (trObj1.innerHTML.toUpperCase() > trObj2.innerHTML.toUpperCase())?1:-1;}
}
else {
return function (trObj1,trObj2) { return (trObj1.innerHTML.toUpperCase() < trObj2.innerHTML.toUpperCase())?1:-1;}
}
}
我的应该最高效....
不过不考虑数据冗余...
----------
sorry,没看到你的代码在哪里?
1、提取数据
可以考虑使用正则匹配如:match(/<tr[\s\S]*?<\/tr>/ig);
2、排序算法
采用一些快速排序或希尔排序算法
3、写入数据
鉴于是表格,无法使用innerHTML,所以这部分可能暂时无法优化大家可以实践证明一下!
compile过的 正则 vs indexOf
排序什么的用内置函数
少点if else
少碟带几次
再把效率提高一点点(40%左右):
<script language="javascript" srccccc="CommonJS_RowSort.js">
var rowSortImg=document.createElement("img");
function rowSortFun(tdObj){
var d1=new Date();
var currentColumnIndex=tdObj.cellIndex;
if(rowSortImg.parentNode != tdObj){
tdObj.appendChild(rowSortImg);
rowSortImg.src="up.gif";
}
else if (rowSortImg.src.indexOf("down.gif")>-1){
rowSortImg.src="up.gif";
}
else{
rowSortImg.src="down.gif";
}
var currentTbody=tdObj.parentNode.parentNode;
var rowsArray=new Array();
for( var i=1;i<currentTbody.rows.length;i++){
rowsArray[i-1]=new String(currentTbody.rows[i].cells[currentColumnIndex].innerHTML);
rowsArray[i-1].trObj=currentTbody.rows[i];
}
rowsArray.sort(getSortFun(tdObj));
for(var i=0;i<rowsArray.length;i++){
currentTbody.appendChild(rowsArray[i].trObj);
}
alert("行数"+rowsArray.length+";所花毫秒数"+(new Date()-d1));
}function getSortFun(tdObj){
//return null;
var sortIsAsc=(rowSortImg.src.indexOf("up.gif")>-1);
if("Number"==tdObj.columnContentType && sortIsAsc){
return function (trObj1,trObj2) {return trObj1-trObj2;}
}
else if("Number"==tdObj.columnContentType && !sortIsAsc){
return function (trObj1,trObj2) { return trObj2-trObj1;}
}
else if(sortIsAsc){
return function (trObj1,trObj2) { return (trObj1> trObj2)?1:-1;}
}
else {
return function (trObj1,trObj2) { return (trObj1< trObj2)?1:-1;}
}
}</script>
sort虽然是内置的函数,但是我想他应该不知道要排序的数是什么样的,而数据结构中排序算法的快慢和数据是什么样是有很大的关系.如果sort会在排序之前先判断数据是什么样,那样就更说明sort不是最优的.也就是说sort应该不一定就是最优的函数,这个观点只是我自己的推理,没有实践过.
所以如果有办法不调用自定义函数的话有可能再提速一点...
如果不考虑原始数据合法性的话...
可以全部不用...
逆序就reverse一下...
? 一个高效率的算法一般是在已知结构上搞出来的...唉...俺只有在了解足够多内容的前提下,,,
才有办法搞...
----------ding 他的。
再把效率提高百分之十几(如果排序的内容是Text的话):<script language="javascript" srccccc="CommonJS_RowSort.js">
var rowSortImg=document.createElement("img");
function rowSortFun(tdObj){
var d1=new Date();
var currentColumnIndex=tdObj.cellIndex;
if(rowSortImg.parentNode != tdObj){
tdObj.appendChild(rowSortImg);
rowSortImg.src="up.gif";
}
else if (rowSortImg.src.indexOf("down.gif")>-1){
rowSortImg.src="up.gif";
}
else{
rowSortImg.src="down.gif";
}
var currentTbody=tdObj.parentNode.parentNode;
var rowsArray=new Array();
for( var i=1;i<currentTbody.rows.length;i++){
rowsArray[i-1]=new String(currentTbody.rows[i].cells[currentColumnIndex].innerHTML.toUpperCase());
rowsArray[i-1].trObj=currentTbody.rows[i];
}
rowsArray.sort(getSortFun(tdObj));
var sortIsAsc=(rowSortImg.src.indexOf("up.gif")>-1);
if(!sortIsAsc) rowsArray.reverse();
for(var i=0;i<rowsArray.length;i++){
currentTbody.appendChild(rowsArray[i].trObj);
}
alert("行数"+rowsArray.length+";所花毫秒数"+(new Date()-d1));
}function getSortFun(tdObj){
if("Number"==tdObj.columnContentType){
return function (trObj1,trObj2) {return trObj1-trObj2;}
}
else return null;
}
</script>
是IE的话在td上面放个自定义属性应该也可以吧,把数字的排序消耗转换到页面初始化的时候
以上几次效率提高的思路主要是减少对象的调用层次深度来达到的。还有一个循环可以减少调用层次深度,可以再快几毫秒: for( var i=1;i<currentTbody.rows.length;i++){
rowsArray[i-1]=new String(currentTbody.rows[i].cells[currentColumnIndex].innerHTML.toUpperCase());
rowsArray[i-1].trObj=currentTbody.rows[i];
}--->>> var rows=currentTbody.rows;
for( var i=1;i<rows.length;i++){
rowsArray[i-1]=new String(rows[i].cells[currentColumnIndex].innerHTML.toUpperCase());
rowsArray[i-1].trObj=rows[i];
}
还有一个值得改进的地方,是把排序后的对象表现出来,即以下这段:
for(var i=0;i<rowsArray.length;i++){
currentTbody.appendChild(rowsArray[i].trObj);
}
生成测试代码的文件,把table考过来,太长就不刷屏了
<script language=javascript>
var obj=document.getElementsByTagName("table")[0].childNodes[0]
for(var i=0;i<obj.childNodes.length;i++)
{
obj.childNodes[i].childNodes[1].aaa="a"+obj.childNodes[i].childNodes[1].innerHTML
}
document.getElementById("textarea1").value=obj.outerHTML
</script>
下面是排序的代码
<script language="javascript" srccccc="CommonJS_RowSort.js">function rowSortFun(tdObj,sortType){
var d1=new Date();
var currentColumnIndex=tdObj.cellIndex;
var currentTbody=tdObj.parentNode.parentNode;
var rowsArray=new Array();
var objTd=null;
for( var i=1;i<currentTbody.rows.length;i++){
objTr=currentTbody.rows[i]
//rowsArray[i-1]=new Array(objTr.cells[currentColumnIndex].innerHTML,objTr);
//rowsArray[i-1]=new String(currentTbody.rows[i].cells[currentColumnIndex].innerHTML);
//rowsArray[i-1].trObj=currentTbody.rows[i];
rowsArray[i-1]=new String(currentTbody.rows[i].cells[currentColumnIndex].innerHTML.toUpperCase());
rowsArray[i-1].trObj=currentTbody.rows[i];
}
rowsArray.sort(); for(var i=0;i<rowsArray.length;i++){
currentTbody.appendChild(rowsArray[i].trObj);
//currentTbody.appendChild(rowsArray[i][1]);
}
alert("行数"+rowsArray.length+";所花毫秒数"+(new Date()-d1));
}</script>
按照“是第一次排完序后就记下该列排序后的rowsArray,第二次排序时就可以不用重新排序。”的思路:
代码改成如下,在第二次排序时,时间再快40%左右.<script language="javascript" srccccc="CommonJS_RowSort.js">
var rowSortImg=document.createElement("img");
function rowSortFun(tdObj,needCache){
var d1=new Date();
if(needCache==null) needCache=true;//default value is true;
var currentColumnIndex=tdObj.cellIndex;
if(rowSortImg.parentNode != tdObj){
tdObj.appendChild(rowSortImg);
rowSortImg.src="up.gif";
}
else if (rowSortImg.src.indexOf("down.gif")>-1){
rowSortImg.src="up.gif";
}
else{
rowSortImg.src="down.gif";
}
var currentTbody=tdObj.parentNode.parentNode;
var rowsArray=new Array();
if(needCache && tdObj.rowsArray){
rowsArray=tdObj.rowsArray;
}
else{
var rows=currentTbody.rows;
for( var i=1;i<rows.length;i++){
rowsArray[i-1]=new String(rows[i].cells[currentColumnIndex].innerHTML.toUpperCase());
rowsArray[i-1].trObj=rows[i];
}
rowsArray.sort(getSortFun(tdObj));
if(needCache) tdObj.rowsArray=rowsArray;
}
var sortIsAsc=(rowSortImg.src.indexOf("up.gif")>-1);
if(!sortIsAsc) rowsArray.reverse();
for(var i=0;i<rowsArray.length;i++){
currentTbody.appendChild(rowsArray[i].trObj);
}
if(!sortIsAsc) rowsArray.reverse();
alert("行数"+rowsArray.length+";所花毫秒数"+(new Date()-d1));
}function getSortFun(tdObj){
if("Number"==tdObj.columnContentType){
return function (trObj1,trObj2) {return trObj1-trObj2;}
}
else return null;
}
</script>
测试了下,加属性会变快,和字符串是一样的速度了
生成测试代码的文件,把table考过来,太长就不刷屏了
-------------
你加的属性没有派上用场啊
整度一样的原因是你没有传sortFun进去,它就按字符来排序,11会小于5
作了一下相应的改动:
<script language="javascript" srccccc="CommonJS_RowSort.js">
var rowSortImg=document.createElement("img");
function rowSortFun(tdObj,needCache){
var d1=new Date();
if(needCache==null) needCache=true;//default value is true;
var currentColumnIndex=tdObj.cellIndex;
if(rowSortImg.parentNode != tdObj){
tdObj.appendChild(rowSortImg);
rowSortImg.src="up.gif";
}
else if (rowSortImg.src.indexOf("down.gif")>-1){
rowSortImg.src="up.gif";
}
else{
rowSortImg.src="down.gif";
}
var currentTbody=tdObj.parentNode.parentNode;
var rowsArray=new Array();
if(needCache && tdObj.rowsArray){
rowsArray=tdObj.rowsArray;
}
else{
var rows=currentTbody.rows;
for( var i=1;i<rows.length;i++){
rowsArray[i-1]=new String(rows[i].cells[currentColumnIndex].innerHTML.toUpperCase());
rowsArray[i-1].trObj=rows[i];
}
var fun=getSortFun(tdObj);
if(getSortFun(tdObj)) rowsArray.sort(fun);
else rowsArray.sort();
if(needCache) tdObj.rowsArray=rowsArray;
}
var sortIsAsc=(rowSortImg.src.indexOf("up.gif")>-1);
if(!sortIsAsc) rowsArray.reverse();
for(var i=0;i<rowsArray.length;i++){
currentTbody.appendChild(rowsArray[i].trObj);
}
if(!sortIsAsc) rowsArray.reverse();
alert("行数"+rowsArray.length+";所花毫秒数"+(new Date()-d1));
}function getSortFun(tdObj){
if("Number"==tdObj.columnContentType){
return function (trObj1,trObj2) {return trObj1-trObj2;}
}
else return null;
}
</script>
if(sortType=="numberTd")
rowsArray[i-1]=new String(currentTbody.rows[i].cells[currentColumnIndex].aaa);
else
rowsArray[i-1]=new String(currentTbody.rows[i].cells[currentColumnIndex].innerHTML.toUpperCase());后面的那个排序上面的是还是有问题的
不过按位数生成应该可以做到啊上面那个测试用例,如果用Ultraedit可以在替换的时候把正则钩上,然后把aaa="a^(?^)"替换成aaa="a0^1"这样位数就可以做到一样了.看起来效率还可以,比innerHTML要快一些,不过这是把时间转到初始化上了
<tr><td>b</td><td>17</td></tr>
<tr><td>i</td><td>49</td></tr>
<tr><td>l</td><td>22</td></tr>
<tr><td>g</td><td>25</td></tr>
<tr> </tr>
<tr><td>l</td><td>8</td></tr>
<tr><td>f</td><td>33</td></tr>
<tr><td>j</td><td>41</td></tr>
<tr><td>f</td><td>12</td></tr>
<tr><td>a</td><td>6</td></tr>
<tr><td>i</td><td>11</td></tr>
<tr><td>k</td><td>0</td></tr>
<tr><td>j</td><td>19</td></tr>
<tr><td>b</td><td>20</td></tr>
<tr><td>n</td><td>7</td></tr>
<tr><td>k</td><td>38</td></tr>
<tr><td>e</td><td>13</td></tr>
<tr><td>j</td><td>10</td></tr>
<tr><td>h</td><td>18</td></tr>
<tr><td>f</td><td>7</td></tr>
<tr><td>a</td><td>10</td></tr>
<tr><td>m</td><td>16</td></tr>
<tr><td>h</td><td>5</td></tr>
<tr><td>h</td><td>18</td></tr>
<tr><td>j</td><td>23</td></tr>
<tr><td>b</td><td>22</td></tr>
<tr><td>n</td><td>10</td></tr>
<tr><td>m</td><td>0</td></tr>
<tr><td>h</td><td>3</td></tr>
<tr><td>m</td><td>24</td></tr>
<tr><td>n</td><td>43</td></tr>
<tr><td>a</td><td>25</td></tr>
<tr><td>j</td><td>29</td></tr>
<tr><td>n</td><td>4</td></tr>
<tr><td>m</td><td>29</td></tr>
<tr><td>e</td><td>42</td></tr>
<tr><td>f</td><td>9</td></tr>
<tr><td>g</td><td>18</td></tr>
<tr><td>m</td><td>12</td></tr>
<tr><td>i</td><td>37</td></tr>
<tr><td>a</td><td>36</td></tr>
<tr><td>c</td><td>16</td></tr>
<tr><td>h</td><td>37</td></tr>
<tr><td>e</td><td>8</td></tr>
<tr><td>m</td><td>26</td></tr>
<tr><td>g</td><td>43</td></tr>
<tr><td>n</td><td>30</td></tr>
<tr><td>h</td><td>40</td></tr>
<tr><td>m</td><td>6</td></tr>
<tr><td>k</td><td>46</td></tr>
<tr><td>i</td><td>17</td></tr>
<tr><td>a</td><td>30</td></tr>
<tr><td>c</td><td>32</td></tr>
<tr><td>k</td><td>26</td></tr>
<tr><td>n</td><td>33</td></tr>
<tr><td>n</td><td>39</td></tr>
<tr><td>i</td><td>40</td></tr>
<tr><td>e</td><td>33</td></tr>
<tr><td>j</td><td>31</td></tr>
<tr><td>e</td><td>39</td></tr>
<tr><td>g</td><td>7</td></tr>
<tr><td>f</td><td>3</td></tr>
<tr><td>d</td><td>20</td></tr>
<tr><td>f</td><td>7</td></tr>
<tr><td>h</td><td>8</td></tr>
<tr><td>a</td><td>29</td></tr>
<tr><td>j</td><td>30</td></tr>
<tr><td>l</td><td>8</td></tr>
<tr><td>a</td><td>46</td></tr>
<tr><td>b</td><td>34</td></tr>
<tr><td>i</td><td>25</td></tr>
<tr><td>e</td><td>3</td></tr>
<tr><td>l</td><td>39</td></tr>
<tr><td>i</td><td>4</td></tr>
<tr><td>l</td><td>22</td></tr>
<tr><td>l</td><td>31</td></tr>
<tr><td>f</td><td>4</td></tr>
<tr><td>k</td><td>38</td></tr>
<tr><td>m</td><td>48</td></tr>
<tr><td>a</td><td>43</td></tr>
<tr><td>a</td><td>47</td></tr>
<tr><td>c</td><td>36</td></tr>
<tr><td>l</td><td>2</td></tr>
<tr><td>c</td><td>9</td></tr>
<tr><td>f</td><td>35</td></tr>
<tr><td>f</td><td>14</td></tr>
<tr><td>m</td><td>15</td></tr>
<tr><td>n</td><td>39</td></tr>
<tr><td>n</td><td>19</td></tr>
<tr><td>f</td><td>45</td></tr>
<tr><td>a</td><td>19</td></tr>
<tr><td>d</td><td>27</td></tr>
<tr><td>i</td><td>13</td></tr>
<tr><td>a</td><td>27</td></tr>
<tr><td>i</td><td>49</td></tr>
<tr><td>g</td><td>33</td></tr>
<tr><td>n</td><td>38</td></tr>
<tr><td>n</td><td>15</td></tr>
<tr><td>d</td><td>25</td></tr>
<tr><td>n</td><td>30</td></tr>
<tr><td>e</td><td>39</td></tr>
<tr><td>l</td><td>38</td></tr>
<tr><td>k</td><td>10</td></tr>
<tr><td>a</td><td>5</td></tr>
<tr><td>a</td><td>22</td></tr>
<tr><td>h</td><td>10</td></tr>
<tr><td>g</td><td>3</td></tr>
<tr><td>m</td><td>36</td></tr>
<tr><td>m</td><td>40</td></tr>
<tr><td>h</td><td>42</td></tr>
<tr><td>j</td><td>3</td></tr>
<tr><td>h</td><td>25</td></tr>
<tr><td>k</td><td>0</td></tr>
<tr><td>g</td><td>21</td></tr>
<tr><td>n</td><td>24</td></tr>
<tr><td>g</td><td>14</td></tr>
<tr><td>f</td><td>2</td></tr>
<tr><td>d</td><td>4</td></tr>
<tr><td>e</td><td>13</td></tr>
<tr><td>l</td><td>28</td></tr>
<tr><td>e</td><td>42</td></tr>
<tr><td>e</td><td>14</td></tr>
<tr><td>j</td><td>41</td></tr>
<tr><td>c</td><td>39</td></tr>
<tr><td>g</td><td>33</td></tr>
<tr><td>i</td><td>4</td></tr>
<tr><td>d</td><td>37</td></tr>
<tr><td>l</td><td>34</td></tr>
<tr><td>g</td><td>36</td></tr>
<tr><td>f</td><td>10</td></tr>
<tr><td>a</td><td>2</td></tr>
<tr><td>m</td><td>2</td></tr>
<tr><td>a</td><td>33</td></tr>
<tr><td>c</td><td>26</td></tr>
<tr><td>n</td><td>11</td></tr>
<tr><td>n</td><td>40</td></tr>
<tr><td>h</td><td>21</td></tr>
之前想的sort()不用自定义函数没有考虑到数字11会比5小...
我再研究下怎样比较数字...
function getSortFun_cc(tdObj){
if("Number"==tdObj.columnContentType){
return function (trObj1,trObj2) {
if(trObj1.length>trObj2.length)
return 1;
else if(trObj1.length<trObj2.length)
return -1;
else
return trObj1-trObj2;
}
}
else return null;
}用最新的"版本"设置needCache=false,同一组数据,5K个1~1000的随机数...
计时如下...
**用getSortFun_cc():
5969 6000
5657 5500
5875 5531
5797 5735
**用原先的版本:
6250 6063
6047 6141
6031 6125
5984 6437好像快不了很多...
不过我想如果数字之间相差比较远的话会好一点...
1。arrayObj.reverse()几乎不花时间
2。排序函数里要尽量减少对象的调用层次
3。对象数组按对象某个属性排序的话,可以先转化成一个String数组(其值为排序的属性),把对象附在String上,排完序后,再把按序取出String所附的对象。这样能排序速度快很多。