#javascript #visual-studio
#javascript #visual-studio
Вопрос:
Я пытаюсь преобразовать строку даты локали в дату, предназначенную для IE11, я тестирую ее в Visual Studio 2015 и parseInt
возвращает NaN
. Вот пример моей функции:
https://jsfiddle.net/4tL8p5fh/
function convertLocaleDateStringToDate(locale) {
var numbers = locale.split("/");
var results = [];
for (var i = 0; i < numbers.length; i ) {
results[i] = parseInt(numbers[i]);
}
return new Date(results[2], results[0] - 1, results[1]);
}
dates = [
"9/30/2016",
"10/1/2016",
"1/1/2016",
"12/31/2016"
];
var root = document.getElementById("root");
dates.forEach(function(ele) {
root.innerHTML = convertLocaleDateStringToDate(ele) "<br />"
})
<div id="root">
</div>
Если я запускаю ту же функцию только в IE11, она работает нормально, о чем свидетельствует jsfiddle . В IE 11 по какой-то причине, когда вы вводите строку даты локали в date, она не может ее преобразовать.
Комментарии:
1. Всегда добавляйте основание
parseInt(numbers[i], 10)
2. И обратите внимание, что вы могли бы сделать просто
var results = numbers.map(Number);
3. Эти функции отлично работают в моем IE11…
4. добавление основы не исправило это. Я просто запутался, почему jsfiddle отлично работает в IE11, но если я запускаю через VS 15, parseInt возвращает NaN
5. Попробуйте запустить тот же код через VS. Другими словами, создайте пустой веб-проект, добавьте HTML-файл, содержащий только один
div
элемент иscript
элемент с приведенным выше кодом, и посмотрите, выполняется ли он. Затем постепенно добавляйте все, что у вас есть в вашем приложении, пока оно не остановится. Тогда у вас есть виновник.
Ответ №1:
Я отправил строку «9/30/2016» в функцию, и я выходил [«9», «30», «2016»] чего и следовало ожидать, но когда я проверил длину цифры «9», то получил 3. Похоже, что в строку добавлены два символа, один перед и один после числовой строки. Я отфильтровал эти лишние символы, и теперь это работает.