循环太多,导致脚本崩溃,寻求解决方法
需求是这样的, 做一个类似答题的一个系统,
分了十几个小模块,里面有对应的题,每个题下有三种分数(下拉选择)
类似下面那种结构 一个页面的题大概有50左右
(一)
1 :题目1
下拉A 文本域A
下拉B 文本域B
下拉C 文本域C
2 :题目2
下拉A 文本域A
下拉B 文本域B
下拉C 文本域C
(二)
3 :题目3
下拉A 文本域A
下拉B 文本域B
下拉C 文本域C
需求是
分别计算 所有A的得分 B的得分 C的得分
每个大题下的A的得分 B的得分 C的得分
以及 所有的文本域A的文字 B的文字 C的文字
因为自己比较懒 给所有A B C 统一设置了class样式 最后each中分别相加 得出了总分
然后根据 id的规则 (比如 一大题的第一小题 select_1_1 ) 然后根据jquery 选择器匹配 select[id^=select_1_] 又each了一遍 其他(B和C)也是如此
规则大概是这样
跑在ff 谷歌 ie8+没什么大碍
到ie6 直接脚本无响应....
后来想想也是,,一个页面有大概40多循环 能不卡吗.
有没有其他解决办法, 不用那么麻烦的使用唯一id 的val()相加(题目50左右实在是太多了)...
------解决方案--------------------既然IE8+都没事怎么可能因为循环多导致的IE6出事了
去看看JS哪里不兼容吧
IE8跟IE6 7 JS有兼容性问题
------解决方案--------------------多了,能少点不?然后可以分页显示。不一定要一次显示出来。
------解决方案--------------------40多循环 不至于吧
有个什么设备的方法 你试试
类似
for(var i=1;i<=100;i++){a[i]}
改成
for(var i=1;i<=10;i++){a[i++];.....这里总共是个a[i++]}
试试
------解决方案--------------------
试试用委托,把分类放在一个数组中,每进行一个操作就保存一个值
------解决方案--------------------
如果按照你的计算方式的话
分别计算 所有A的得分 B的得分 C的得分
每个大题下的A的得分 B的得分 C的得分
试一下用数组存储每个大题下的A的得分 B的得分 C的得分
然后计算所有A的得分 B的得分 C的得分的时候用上面的数组进行求和
应该会节省一点时间
------解决方案--------------------不命名,就用序号嘛
假定每个题目下的下拉文本对不等(你各处的都是3对)
并假定每个题目都用一个 div 包裹,且每个对象都以命名(即 name 属性存在)则有原型
a = [];
$('div').eac