字符串替换javascript在IE 11中不起作用

时间:2014-12-11 04:13:28

标签: javascript jquery internet-explorer

我在IE 11中替换字符串时遇到问题,我在this site here发布了一个与此相关的问题,但我认为我应该正确地提出另一个问题,重新说明我认为问题所在:我有一个日期选择器jquery UI,我在谷歌日历中绘制事件的日期,我使用事件的摘要为datepicker单元格提供一个类。以下代码:

beforeShowDay: function (date) {
            checado = $.isEmptyObject(todosEventos);
            r = [true, ""];
            fecha = $.datepicker.formatDate('yy-mm-dd', date);
            //console.log(fecha);
            if (checado && unEvento === null) {
                r[1] = "Highlighted-unknown";
                //console.log(todosEventos[fecha]);
            }
            else if (!checado) {
                if (unEvento === null || unEvento === 'undefined') {
                    elEvento = todosEventos[fecha];
                    if (typeof (todosEventos[fecha]) !== 'undefined') {
                        console.log("elEvento=" + elEvento.summary);
                        console.log("El objeto " + todosEventos[fecha]);
                        console.log("Fecha analizada " + date);
                        r[2] = elEvento.summary;
                        //sinAcentos = accentsTidy(elEvento.summary);
                        sinAcentos = elEvento.summary.toLowerCase();
                        non_asciis = { 'a': '[àáâãäå]', 'ae': 'æ', 'c': 'ç', 'e': '[èéêë]', 'i': '[ìíîï]', 'n': 'ñ', 'o': '[òóôõö]', 'oe': 'œ', 'u': '[ùúûűü]', 'y': '[ýÿ]' };
                        for (i in non_asciis) { sinAcentos = sinAcentos.replace(new RegExp(non_asciis[i], 'g'), i); }
                        fechaIni = elEvento.start;
                        fechaFin = elEvento.end;
                        console.log("Fecha de inicio del evento " + fechaIni);
                        console.log("Fecha de fin del evento " + fechaFin);
                        console.log(sinAcentos);
                        r[1] = date >= fechaIni && date <= fechaFin ? " Highlighted" + sinAcentos.replace(/\s/g, "_") : " Highlighted-unknown";
                    }
                }

在Firefox和Chrome中正常工作,但在IE中没有,其中类会在其中保留重音字符,从而产生类似“Highlighteddías_de_descanso_obligatorio”的内容。最初我有一个名为accentsTidy的函数如下:

function accentsTidy(s){
    var r = s.toLowerCase();
     non_asciis = {'a': '[àáâãäå]', 'ae': 'æ', 'c': 'ç', 'e': '[èéêë]', 'i': '[ìíîï]', 'n': 'ñ', 'o': '[òóôõö]', 'oe': 'œ', 'u': '[ùúûűü]', 'y': '[ýÿ]'};
    for (i in non_asciis) { r = r.replace(new RegExp(non_asciis[i], 'g'), i); }
    return r;
};

但是如你所见,我评论了对这个函数的调用并直接替换了事件的摘要,如sinAcentos = elEvento.summary.toLowerCase();,但它甚至不起作用。我希望有人可以指出我可能做错了什么。我已经尝试了函数accentsTidy直接在IE 11的开发者控制台中输入它,它可以工作,但在我的代码中,它没有。有人可以帮我解决这个问题吗?

0 个答案:

没有答案