一段小小的代码让我纠结那么久。上午的时候对jquery感觉还是非常棒的,就是因为这段代码,让我搞了这么久。
代码实现的功能这是样的,当点击全选的时候,所选条目变色,当点击取消全选的时候根据行的奇偶性来显示不同的颜色。
$(function(){ $('#ckall').click(function(cbo){ if(this.accept==''){ if($(this).attr('checked')==true){ $("input[accept=1]").each(function() { $(this).attr("checked",true); $(this).parents("tr").css("background","#FBEC87"); }); }else{ $("input[accept=1]").each(function() { $(this).attr("checked",false); if(($(this).parents("tr").prevAll().length+1)%2==0){ $(this).parents("tr").css("background","white"); }else{ $(this).parents("tr").css("background","#E5F2FB"); } }); } } }) })
循环的时候,执行到第二句的时候就会报错。这个语句用在上面也可以啊,为什么提示报错呢?一列10条数据,第一条可以,然后就报错了。我试了好多种方法,以为是取父类的问题。最后发现竟然是#的问题。不能为空?设置成white就OK了。
得到的经验:遇到错误,不要心急,找出错误的位置,先分析,再多想下。这个语句严谨吗?这个语句真的100%没有问题吗?我相信int i=1;你肯定会认为它没有问题。从上面的东西我得到了一个灰常深刻的教训,写代码要严谨,严格按照规范,这样才能最大化的减少问题