From string to bool in javascript

26 במרץ 2011

תגובה אחת


 


כששומרים משתנה בוליאני ב – cookie או ב – storage זה נשמר כמחרוזת, הבעייה כשמנסים להוציא את הערך ולשים אותו למשל ב – checkbox תמיד ה – checkbox יהיה מסומן מכיוון שגם אם הערך הוא "false" נקבל true, בגלל שכתיבה של הקוד הזה:

 



chk.checked = "false";


 

זהה לקוד הבא:



chk.checked = !("false" == true);


או לזה:



chk.checked = !("false" == false);


 

 

כדי להמיר את הערך (שנשמר כמחרוזת) ניתן להרחיב את האובייקט String.

 



String.prototype.ToBool = function () {


    return this.toLowerCase() == "false" ? false : true;


}


 

ואז נוכל לכתוב

 



chk.checked = "false".ToBool();

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

תגובה אחת

  1. עומר כץ3 באפריל 2011 ב 12:37

    לא מומלץ לזהם את מרחב השמות של אובייקטי Javascript בגלל שהם שוברים אנומרציות.
    ראה כאן:
    http://blog.101ideas.cz/posts/extending-js-prototypes-in-non-invasive-way.html

    הגב