IndexOf не работает с датой tolocalestring в т.е., но поддерживает - PullRequest
0 голосов
/ 10 октября 2019

Итак, у меня есть код, который работает в других браузерах, но в IE он не работает. Я могу подтвердить вывод в браузер записи о том, что функция indexOf поддерживается и работает, потому что код console.log('array.indexOf(2) = ' + array.indexOf(2)); выводит на консоли значение 0.

Согласно моим выводам из журнала другие значения верны, и все выглядит так, как должноработает, но код внутри оператора if никогда не срабатывает.

Вот изображение моего javascript-входа в консоль Here is an image of my javascript logging to the console

Я пробовал множество вещей,который я выделил в коде, например, используя .toString() и jQuery.inArray, а также daySetting[0].includes

console.log('daySetting[0] = ' + daySetting[0]);

console.log('new Date().toLocaleString("en-us", { weekday: "short" }) = ' + new Date().toLocaleString('en-us', { weekday: 'short' }));

console.log('daySetting[0].indexOf(new Date().toLocaleString("en-us", { weekday: "short" })) = ' + daySetting.indexOf(new Date().toLocaleString('en-us', { weekday: 'short' })));

var array = [2, 9, 9]; //test array
console.log('array.indexOf(2) = ' + array.indexOf(2));

if (daySetting[0].toString().indexOf(new Date().toLocaleString('en-us', { weekday: 'short' })) !== -1) {
  //|| daySetting[0].includes(new Date().toLocaleString('en-us', { weekday: 'short' }))//tried the includes method and .toString() method
  //if (jQuery.inArray(new Date().toLocaleString('en-us', { weekday: 'short' }), daySetting) != -1) {//tried jquery in array
  console.log("dayHours = " + dayHours); //expecting this to be output
  continue; //code is inside a loop
}

Я ожидаю увидеть код console.log("dayHours = " + dayHours);, который будет зарегистрирован на консоли, но это не так. Это отлично работает в других браузерах, но я просто не могу понять, что происходит.

Вот скрипка кода https://jsfiddle.net/q8pod2xj/1/

1 Ответ

1 голос
/ 10 октября 2019

Проблема не с indexOf.

new Date (). ToLocaleString ('en-us', {weekday: 'short'}) возвращает 'Thu' (length = 4), имеет пробелв 0-м индексе. Избегать его с помощью substr (1).

var theHours = "Mon: Open 9am - 5:30pm, Tues: Open 9am - 5:30pm, Wed: Open 9am - 5:30pm, Thurs: Open 9am - 5:30pm, Fri: Open 9am - 5:30pm, Sat: Open 9am - 5pm, Sun: Open 11am - 5pm";
var days = theHours.split(',');
for (var i = 0; i < days.length; i++) {
    var daySetting = days[i].split(/:(.+)/);
    var dayHours = daySetting[1];

    if (daySetting[0].indexOf(new Date().toLocaleString('en-us', { weekday: 'short' }).substr(1)) !== -1) {
        console.log("dayHours = " + dayHours); //expecting this to be output
        continue; //code is inside a loop
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...