我有一个网页,它从用户那里获取数值并将它们绘制在网格上。下面是输入一组数字时使用的 jQuery 示例:
$('#c_per,#c_pot').keyup(function() {
$('.ls_ref').each(function() {
if($(this).text().search('C') > 0) {
countDown(this.id);
}
$(this).text($(this).text().replace('C', ''));
});
if($('#c_per').val() > 0 && $('#c_pot').val() > 0) {
setGridPosition('C',$('#c_per').val(),$('#c_pot').val());
}
var c_per = +$('#c_per').val() || 0;
var c_pot = +$('#c_pot').val() || 0;
$('#c_tot').val(c_per + c_pot);
});
c_per 和 c_pot 是两个输入:用户在其中放置数字的文本。与每组数字对应的类别只能在网格中出现一次,因此是给定 keyup 事件函数中的第一个函数。接下来检查两个输入是否都有值,然后调用 setGridPosition 函数。剩下的只是将两个数字相加,并确保当两个输入之一没有值时函数不会崩溃。
function setGridPosition(cat,per,pot) {
var id = "ls_" + per + "_" + pot;
$('#'+id).append(cat);
var check = per + "-" + pot;
switch(check) {
case '1-1': case '2-1': case '1-2': case '2-2':
counts.q_1 += 1;
switch(check) {
case '1-1':
priority_one_count.s_1_1++; break;
case '2-1':
priority_one_count.s_2_1++; break;
case '1-2':
priority_one_count.s_1_2++; break;
case '2-2':
priority_one_count.s_2_2++; break;
}
break;
case '3-1': case '4-1': case '5-1': case '3-2': case '4-2': case '5-2':
counts.q_2 += 1;
switch(check) {
case '3-1':
priority_two_count.s_3_1++; break;
case '4-1':
priority_two_count.s_4_1++; break;
case '5-1':
priority_two_count.s_5_1++; break;
case '3-2':
priority_two_count.s_3_2++; break;
case '4-2':
priority_two_count.s_4_2++; break;
case '5-2':
priority_two_count.s_5_2++; break;
}
break;
case '3-3': case '4-3': case '3-4':
counts.q_3 += 1;
switch(check) {
case '3-3':
priority_three_count.s_3_3++; break;
case '4-3':
priority_three_count.s_4_3++; break;
case '3-4':
priority_three_count.s_3_4++; break;
}
break;
case '5-3': case '4-4': case '3-5':
counts.q_4 += 1; break;
case '5-4': case '4-5': case '5-5':
counts.q_5 += 1; break;
default: counts.q_6 += 1;
}
}
这个函数的大部分内容只是跟踪我需要编译的一些统计数据的位置。不确定下降的 switch 语句是否影响 IE8。
我尝试让 jsfiddle.net 与此网站配合使用,但我无法弄清楚。我有一个临时站点设置,您可以在其中查看完整版本。 -链接已删除-
这段代码每次在 Chrome 和 FireFox 上都可以工作,在 IE8 上大约 95% 的时间都可以工作(需要支持)。通常 9/11 组数字会正确生成网格上的位置。
这段代码中是否有 IE8 遇到问题的地方?
最佳答案
这是一个疯狂的猜测,但你不需要休息一下吗?对于最后一个默认值:声明?就像在一组开关中一样,也许这使它跳转到另一个案例,就像您处理 case 'whatever' 的方式一样: case 'yeah' :您可以尝试为默认语句添加中断吗?我看起来像一个非常复杂的算法,但希望这就是问题所在。
关于javascript - 如何改进我的 jQuery 使其始终在 IE8 中工作,目前它是时好时坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10887608/