2013-11-14 2 views
1

Я ищу хорошее решение для превращения этого indexOf в jQuery inArray. Я тестирую IE8, и indexOf полностью терпит неудачу. Любая помощь будет принята с благодарностью.Switching indexOf to inArray

function parse(datestring) { 
    var date = parseInt(datestring.slice(0,2), 10), 
     month = shortMonths.indexOf(datestring.slice(2,5).toLowerCase()), 
     year = parseInt(datestring.slice(5,9), 10); 
    return new Date(year, month, date); 
} 

ответ

1

Попробуйте это:

month = $.inArray(datestring.slice(2,5).toLowerCase(), shortMonths) 

Лично я оставил бы свой код, как это. Это не имеет никакой пользы от того, что у вас есть сейчас.

+0

Работала отлично, я должен ее изменить, потому что кажется, что IE8 <не поддерживает IndexOf –

+0

В этом случае мне жаль, что вам все еще нужно поддерживать IE8 и ниже :( –

+0

К счастью, это просто IE8 lol спасибо за помощь :) –

1

Попробуйте

month = $.inArray(datestring.slice(2, 5).toLowerCase(), shortMonths) 
0

Вместо этого избегайте переписывания кода и добавьте это перед своим кодом. Он добавляет поддержку indexOf для тех браузеров, которые ее не получили.

if (!Array.prototype.indexOf) { 
    Array.prototype.indexOf = function (searchElement , fromIndex) { 
    var i, 
     pivot = (fromIndex) ? fromIndex : 0, 
     length; 

    if (!this) { 
     throw new TypeError(); 
    } 

    length = this.length; 

    if (length === 0 || pivot >= length) { 
     return -1; 
    } 

    if (pivot < 0) { 
     pivot = length - Math.abs(pivot); 
    } 

    for (i = pivot; i < length; i++) { 
     if (this[i] === searchElement) { 
     return i; 
     } 
    } 
    return -1; 
    }; 
} 
+0

У меня есть решение, просто жду, чтобы пометить. Хорошее обходное решение, хотя, цените это. –