作者tomin (蓝蓝紫黄橘 粉灰白绿咖)
看板Ajax
标题Re: [问题] click event只执行一次?
时间Tue Jun 14 15:50:42 2011
※ 引述《Bladework (Nothing)》之铭言:
: ※ 引述《Bladework (Nothing)》之铭言:
: : Hi 各位板友,
: : 我试着要sort table, 可是click event只会执行一次除非我重新读取网页.
: : 程式码的连结在此: http://tinyurl.com/5tgsasa
: : 请问有人能给我一些建议或帮助吗?
: : 谢谢各位的时间.
: 不好意思, 已附上HTML的连结.
: http://tinyurl.com/4xsqljs
: td与内容的撷取是在下面id=outputRow和forEach的回圈内.
可正常运作的demo:
http://jsfiddle.net/d5XRX/
1.
> sortFunction
- table.appendChild(trArray[j]);
+ tBody.appendChild(trArray[j]);
原本写table是附加在2的位置,但应该是要在1的位置。
(sortFunction里tBody是去读tBodies[0])
1
</tbody>
2
</table>
2.
> compareValue
- var value1 = a.cells[colIndex].innerTEXT;
- var value2 = b.cells[colIndex].innerTEXT;
+ var value1 = a.cells[colIndex].innerHTML;
+ var value2 = b.cells[colIndex].innerHTML;
不要IE only
3.
如果tbody>td都是字串 那本来的sort不用改
如果可能要比较数字 那可能会sort错误 例如会发生22 < 5的错误
这时就要将字串转成数字
新增
function isInt(x) {
var y=parseInt(x);
if (isNaN(y)) return false;
return x==y && x.toString()==y.toString();
}
> compareValue
var value1 = a.cells[colIndex].innerHTML;
var value2 = b.cells[colIndex].innerHTML;
+ if(isInt(value1) && isInt(value2)){
+ value1 = parseInt(value1);
+ value2 = parseInt(value2);
+ }
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.122.30.198
※ 编辑: tomin 来自: 140.122.30.198 (06/14 15:52)