javascript - 如何改进我的 jQuery 使其始终在 IE8 中工作,目前它是时好时坏

标签 javascript jquery internet-explorer-8

我有一个网页,它从用户那里获取数值并将它们绘制在网格上。下面是输入一组数字时使用的 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/

相关文章:

javascript - 如何避免 Angular 4 应用程序中的图像旋转

php - 从 SQL 数据库中缓存数据以进行排序

javascript - 如何禁用下一步按钮,直到完成所有字段

javascript - 如何使用 jQuery 选择某个元素的所有子级(任何级别)和父级

jquery - 使用 jQuery 交叉淡入淡出背景图像

VBA 卡在 ie.busy 和 readystate 检查

javascript - 如何增加旋转值

javascript - 单击页面链接时重新调整站点的主体和 iframe

javascript - ng-如果不能在 IE8 中工作

css - 试图修复同一页面在 IE8 中略有不同的呈现