בעיית indexOf ו-Internet Explorer

כדאי תמיד להשאר מעודכנים! הרשמו לעדכונים של האתר במייל! - המייל יישלח כל יום ראשון בעשר בבוקר ויכיל אך ורק את המאמרים שהתפרסמו באינטרנט ישראל. ללא ספאם, ללא הצפות, ללא בלגנים. אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂

אין כמו אינטרנט אקספלורר כדי לספק לכל מתכנת שהוא שלל של בעיות הזויות. מסתבר שהמתודה האולטרא שימושית indexOf שמשמשת אותנו למצוא טקסט מסוים במערך של JavaScript וזמינה החל מגרסת JavaScript 1.5 לא עובדת באינטרנט אקספלורר 6,7 וגם 8.

ישנן שתי דרכים לפתרון מהיר של הבעיה. הראשונה היא להשתמש בפונקצית jQuery שמיועדת לחיפוש במערכים. שם הפונקציה הוא jQuery.inArray. ובמדריך המוקדש לפונקציות העזר של jQuery יש הסבר מקיף + דוגמא כיצד להשתמש בו.

הנה הדוגמא:


arrOfNames = ["david", "moshe", "ran", "omri", "yael"];
$('#myButton6').click(function () {
result = jQuery.inArray("omri", arrOfNames);
alert("Omri is at "+result);
});

פתרון נוסף הוא להוסיף את ה-indexOf כ-prototype של מתודה לאובייקט מסוג Array:


if(!Array.indexOf){
    Array.prototype.indexOf = function(obj){
        for(var i=0; i<this.length; i++){
            if(this[i]==obj){
                return i;
            }
        }
        return -1;
    }
}


הוספת הקוד לעיל ל-JavaScript לא מחייבת שימוש ב-jQuery כמובן ומוסיפה את ה-indexOf כמתודה חדשה למערך ומאפשרת להשתמש בה.

כדאי תמיד להשאר מעודכנים! הרשמו לעדכונים של האתר במייל! - המייל יישלח כל יום ראשון בעשר בבוקר ויכיל אך ורק את המאמרים שהתפרסמו באינטרנט ישראל. ללא ספאם, ללא הצפות, ללא בלגנים. אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂

אהבתם? לא אהבתם? דרגו!



אל תשארו מאחור! יש עוד מה ללמוד!