להפוך מספר למילים ב jQuery.
במדריך הזה נלמד איך להפוך כל מספר בין 1 ל 999 למילים.
נתחיל ביצירת 3 תגים, תג דיב שיכיל את הטקסט של המספר, תג input text לקבלת מספר, ותג input submit לביצוע הקוד אשר יהפוך את המספר לטקסט.
עכשיו נכין את הקטע של ה jQuery.קוד HTML:<div id="henum"></div> <input type="text" id="number"> <input type="submit" value="Go" id="submit">
נכין אירוע לחיצה על ה submit:
לפני שנתחיל להכין את הקוד שלנו, הכנתי לכם רשימה לאיך לפרק כל מספר בכל קטגוריה, יעזור לכן להבנה בהמשך:קוד HTML:$("#submit").click(function() { });
אחדות:
num - הספרה.
עשרות:
num/10 - ספרת העשרות (יש לעגל את הספרה כלפי מטה, למשל המספר 57 יהיה 5.7).
num%10 - ספרת האחדות.
מאות:
num/100 - ספרת המאות (יש גם פה לעגל כלפי מטה).
num/10%10 - ספרת העשרות (יש לעגל כלפי מטה).
num%10 - ספרת האחדות.
עכשיו מה שהקוד צריך בעצם לעשות, זה לבדוק איזה סוג המספר שלנו (ספרה, דו ספרתי או תלת ספרתי), ולפי זה לפרק את המספר לאחדות, עשרות ומאות.
אז הכי פשוט זה להכין מערך אשר יכיל את המילים של כל ספרה, כדי שבפירוק של המספר נקבל את הספרה, וכך נוכל לגשת אליה דרך המערך.
נכין משתנה num אשר יכיל את המספר שלנו, ונכין 3 מערכים, אשר יכילו את הטקסט בעברית.
עכשיו נתחיל בחלק הראשון, הפיכת ספרה למילה.קוד HTML:var num = $("#number").val(), n1 = ["אחד","שתיים","שלוש","ארבע","חמש","שש","שבע","שמונה","תשע"], n2 = ["עשר","עשרים","שלושים","ארבעים","חמישים","שישים","שבעים","שמונים","תשעים"], n3 = ["מאה","מאתיים","שלוש מאות", "ארבע מאות","חמש מאות","שש מאות","שבע מאות","שמונה מאות","תשע מאות"];
נבדוק האם המספר שלנו הוא ספרה (טווח של 1-9, לא כולל את 0), במידה וכן, אז נדפיס את הערך של המערך הראשון, עם הספרה פחות 1 (כי במערך הספירה מתחילה מ - 0).
במידה ולא, נדפיס הודעת שגיאה.
עכשיו אם תבדקו, תראו שאם לדוגמא תרשמו את הספרה 6, תקבלו בחזרה את המילה שש.קוד HTML:if(num < 10 && num > 0) { $("#henum").text(n1[num-1]); }else{ $("#henum").text("המספר שהוקש לא תקין"); }
עכשיו נתקדם ונעשה גם שהוא ידפיס את העשרות.
במקום השורה של הודעת השגיאה, נכין תנאי נוסף אשר יבדוק האם המספר הוא דו ספרתי (טווח של 10-99).
בתוך התנאי נוסיף שורה אשר תדפיס לנו את המספר, ע"י פנייה למערך השני עם ספרת העשרות, ופנייה למערך הראשון עם ספרת האחדות.קוד HTML:if(num < 100 && num > 9) { }else{ $("#henum").text("המספר שהוקש לא תקין"); }
עכשיו אם תבדקו, תראו שאם לדוגמא תרשמו את המספר 94, תקבלו תשעים וארבע.קוד HTML:$("#henum").text(n2[Math.floor(num/10)-1] + " ו" + n1[num%10-1]);
עכשיו יש בתוך התנאי הזה 2 בעיות - הראשונה שאם רושמים מספר רק של עשרות (כמו למשל 50) אז זה לא ימצא במערך את -1 (הספרה היא 0, ואנחנו מורידים אחד).
אז כדי לפתור את זה, נעשה תנאי שיבדוק האם ספרת האחדות היא 0.
ככה זה יהיה עד עכשיו התנאי של העשרות.קוד HTML:if(num < 100 && num > 9) { if(num%10 == 0) { $("#henum").text(n2[Math.floor(num/10)-1]); }else{ $("#henum").text(n2[Math.floor(num/10)-1] + " ו" + n1[num%10-1]); }
אבל אם תשחקו עם זה, תגלו עוד בעיה - במספרים שבין 11 ל 19.
אם תרשמו לדוגמא את המספר 15, תקבלו עשר וחמש.
אז כדי לפתור את הבעיה הזאת, נצטרך לבצע תנאי שיבדוק האם המספר הוא בין 11 ל 19, ובמידה וכן, אז להדפיס את ספרת האחדות, ולהוסיף "עשרה".
זהו, עכשיו כל המספרים מ 1 עד 99 יעבדו.קוד HTML:if(num < 100 && num > 9) { if(num%10 == 0) { $("#henum").text(n2[Math.floor(num/10)-1]); }else{ if(num < 20 && num > 10) { $("#henum").text(n1[num%10-1] + " עשרה"); }else{ $("#henum").text(n2[Math.floor(num/10)-1] + " ו" + n1[num%10-1]); } }
עכשיו נעבור למאות.
נעשה בדיקה האם המספר הוא בין 100 ל 999.
במידה וכן, אז שהוא יפרק את המספר לאחדות, עשרות ומאות, ולפי זה שיוציא את הערך שיש במערך.קוד HTML:if(num > 99 && num < 1000) { }
את הקוד הזה נוסיף גם הפעם במקום ההודעת שגיאה, כדי ליצור תנאי נוסף, ואז נעשה ELSE לתנאי של המאות, ואז נדפיס את השגיאה.קוד HTML:$("#henum").text(n3[Math.floor(num/100)-1] + " " + n2[Math.floor(num/10%10)-1] + " ו" + n1[num%10-1]);
גם הפעם אנחנו נתקלים בכמה מצבים של בעיות שראינו בתנאים הקודמים:קוד HTML:if(num > 99 && num < 1000) { $("#henum").text(n3[Math.floor(num/100)-1] + " " + n2[Math.floor(num/10%10)-1] + " ו" + n1[num%10-1]); }else{ $("#henum").text("המספר שהוקש לא תקין"); } } }
1. אם המספר מכיל עשרה (לדוגמא 512, 915), אז צריך את ספרת האחדות + עשרה.
2. אם ספרת האחדות וספרת העשרות שוות ל - 0, אז להדפיס רק את המאות.
3. אם ספרת האחדות שווה ל - 0 (לא כולל העשרות), אז לא להדפיס את האחדות.
4. אם ספרת העשרות שווה ל - 0 (לא כולל האחדות), אז לא להדפיס את העשרות.
נתחיל בתנאי הראשון, אשר יבדוק האם המספר הוא עשרה:
במידה ולא, אז נבדוק אם האחדות והעשרות שוות ל - 0:קוד HTML:if(num%100 < 20 && num%100 > 10) { $("#henum").text(n3[Math.floor(num/100)-1] + " ו" + n1[num%10-1] + " עשרה"); }else{
במידה ולא, אז נבדוק האם האחדות שווה ל - 0:קוד HTML:if(num%10 == 0 && Math.floor(num/10%10) == 0) { $("#henum").text(n3[Math.floor(num/100)-1]); }else{
במידה ולא, אז נבדוק האם העשרות שווה ל - 0:קוד HTML:if(num%10 == 0) { $("#henum").text(n3[Math.floor(num/100)-1] + " " + n2[num/10%10-1]); }else{
במידה ולא, אז פשוט נדפיס את המספר רגיל, ונסגור גם את ה elseים:קוד HTML:if(Math.floor(num/10%10) == 0) { $("#henum").text(n3[Math.floor(num/100)-1] + " ו" + n1[num%10-1]); }else{
זהו, סיימנו.קוד HTML:$("#henum").text(n3[Math.floor(num/100)-1] + " " + n2[Math.floor(num/10%10)-1] + " ו" + n1[num%10-1]); } } } }
עכשיו אתם יכולים להדפיס כל מספר בעברית, ואתם יכולים להשתמש ברעיון הזה לעוד דברים, כמו למשל להדפיס את החודש בעברית לפי מספר (לדוגמא: חודש 4 - אפריל).
הקוד המלא במידה ויש בעיות:
כל שאלה, הערה, בקשה תתקבל בברכה.קוד HTML:<script src="jquery/jquery.js"></script> <script type="text/javascript"> $(document).ready(function() { $("#submit").click(function() { var num = $("#number").val(), n1 = ["אחד","שתיים","שלוש","ארבע","חמש","שש","שבע","שמונה","תשע"], n2 = ["עשר","עשרים","שלושים","ארבעים","חמישים","שישים","שבעים","שמונים","תשעים"], n3 = ["מאה","מאתיים","שלוש מאות", "ארבע מאות","חמש מאות","שש מאות","שבע מאות","שמונה מאות","תשע מאות"]; if(num > 99 && num < 1000) { if(num%100 < 20 && num%100 > 10) { $("#henum").text(n3[Math.floor(num/100)-1] + " ו" + n1[num%10-1] + " עשרה"); }else{ if(num%10 == 0 && Math.floor(num/10%10) == 0) { $("#henum").text(n3[Math.floor(num/100)-1]); }else{ if(num%10 == 0) { $("#henum").text(n3[Math.floor(num/100)-1] + " " + n2[num/10%10-1]); }else{ if(Math.floor(num/10%10) == 0) { $("#henum").text(n3[Math.floor(num/100)-1] + " ו" + n1[num%10-1]); }else{ $("#henum").text(n3[Math.floor(num/100)-1] + " " + n2[Math.floor(num/10%10)-1] + " ו" + n1[num%10-1]); } } } } }else{ if(num < 10 && num > 0) { $("#henum").text(n1[num-1]); }else{ if(num < 100 && num > 9) { if(num%10 == 0) { $("#henum").text(n2[Math.floor(num/10)-1]); }else{ if(num < 20 && num > 10) { $("#henum").text(n1[num%10-1] + " עשרה"); }else{ $("#henum").text(n2[Math.floor(num/10)-1] + " ו" + n1[num%10-1]); } } }else{ if(num > 99 && num < 1000) { $("#henum").text(n3[Math.floor(num/100)-1] + " " + n2[Math.floor(num/10%10)-1] + " ו" + n1[num%10-1]); }else{ $("#henum").text("המספר שהוקש לא תקין"); } } } } }); }); </script> <div id="henum"></div> <input type="text" id="number"> <input type="submit" value="Go" id="submit">




ציטוט ההודעה