שלח תשובה

זירת השאלות

292
צפיות
36
תשובות

JS ו/או DHTML

,‏ 24 בפברואר, 2004

אני קורא לפונקציה דרך ה-onClick (ברמת ה-JS)

object.onclick = function emo(){
stateMent;
}

השאלה שלי היא איך אני שולח פרמטרים לפונקציה כי בעצם בקוד אני גם מגדיר את הפונקציה וגם קורא לה בו זמנית מישהו ?

תגיות:

36 תשובות

  1. ניר טייב הגיב:

    שאלה אחרת
    יש לי את הפונקצייה הבאה

    function EmoBar(id){
    var EmoDiv = document.getElementById(id);
    var oMessageBox = document.getElementById("message");
    var oEmoImgArr = new Array(11);
    var emoArr = new Array(11);
    emoArr[0] = "";
    emoArr[1] = "";
    emoArr[2] = "|+|";
    emoArr[3] = "|-|";
    emoArr[4] = ";-)";
    emoArr[5] = ";-(";
    emoArr[6] = "$-)";
    emoArr[7] = "|!@|";
    emoArr[8] = ";-|";
    emoArr[9] = "|<*>|";
    emoArr[10] = "|heart|";
    for (i=0;i<11;i++){
    oEmoImgArr[i] = document.createElement("img")
    oEmoImgArr[i].src = "smile/" + i + ".gif";
    oEmoImgArr[i].className = "emoBar";
    oEmoImgArr[i].onclick = function Emo(){
    oMessageBox.focus();
    var oRange = document.selection.createRange();
    if (oRange.text!=null)
    oRange.text += emoArr[i];
    }
    EmoDiv.appendChild(oEmoImgArr[i]);
    }
    }

    הפונקצייה בעצם מקבלת כפרמטר ID של DIV מסוים ובתוכה יש סמיילים שאני מציג בלולאת JS. בניתי בפונקצייה גם מערך של סימון כל סמיילי עכשיו הרעיון הוא שבכל לחיצה על התמונה שנוצרת יופי ב-textArea הסימון בהתאם למס’ המופיע ב-i (משתנה שרץ בלולאה). הבעיה היא שאם אני מפעיל את הפונקציה ולוחץ על תמונה מופיעה לי ב-textArea את המילה undefined אבל אם אני שם במקום ה-iמס’ מסוים נגיד 1 זה כותב את הסימון שלו על פי המערך כמו שזה אמור להיות למישהו יש פיתרון ?

  2. ניר טייב הגיב:

    ה-i
    הוא המשתנה שאני מריץ בלולאה

    for (i=0;i<11;i++){

  3. ניר טייב הגיב:

    הגדרתי אותו ….
    עכשיו בשני דרכים (בנפרד) פעם אחת בתוך הלולאה

    function EmoBar(id){
    var EmoDiv = document.getElementById(id);
    var oMessageBox = document.getElementById("message");
    var oEmoImgArr = new Array(11);
    var emoArr = new Array(11);
    emoArr[0] = "";
    emoArr[1] = "";
    emoArr[2] = "|+|";
    emoArr[3] = "|-|";
    emoArr[4] = ";-)";
    emoArr[5] = ";-(";
    emoArr[6] = "$-)";
    emoArr[7] = "|!@|";
    emoArr[8] = ";-|";
    emoArr[9] = "|<*>|";
    emoArr[10] = "|heart|";
    for var (i=0;i<11;i++){
    oEmoImgArr[i] = document.createElement("img")
    oEmoImgArr[i].src = "smile/" + i + ".gif";
    oEmoImgArr[i].className = "emoBar";
    oEmoImgArr[i].onclick = function Emo(){
    oMessageBox.focus();
    var oRange = document.selection.createRange();
    if (oRange.text!=null)
    oRange.text += emoArr[i];
    }
    EmoDiv.appendChild(oEmoImgArr[i]);
    }
    }

    ופעם אחת מחוץ ללולאה

    function EmoBar(id){
    var EmoDiv = document.getElementById(id);
    var oMessageBox = document.getElementById("message");
    var oEmoImgArr = new Array(11);
    var emoArr = new Array(11);
    var i;
    emoArr[0] = "";
    emoArr[1] = "";
    emoArr[2] = "|+|";
    emoArr[3] = "|-|";
    emoArr[4] = ";-)";
    emoArr[5] = ";-(";
    emoArr[6] = "$-)";
    emoArr[7] = "|!@|";
    emoArr[8] = ";-|";
    emoArr[9] = "|<*>|";
    emoArr[10] = "|heart|";
    for (i=0;i<11;i++){
    oEmoImgArr[i] = document.createElement("img")
    oEmoImgArr[i].src = "smile/" + i + ".gif";
    oEmoImgArr[i].className = "emoBar";
    oEmoImgArr[i].onclick = function Emo(){
    oMessageBox.focus();
    var oRange = document.selection.createRange();
    if (oRange.text!=null)
    oRange.text += emoArr[i];
    }
    EmoDiv.appendChild(oEmoImgArr[i]);
    }
    }

    וזה עדיין כותב undefined

  4. ניר טייב הגיב:

    טעות הנה
    זה הקובץ

    מצטער על איך שהקובץ נראה זה בגלל שאני עובד עם קובץ CSS חיצוני

  5. כי בתוך הפונק’ הפנימית
    i כבר לא קיים.
    רצ"ב קובץ. שים לב שזה יעבוד רק ב-IE.

  6. ניר טייב הגיב:

    ???
    מה זה רצ"ב (מוזר אני כבר כמה זמן כאן ואני לא יודע)???
    ואיך אני יכול להפוך את הקוד כדי שיעבוד גם בנטסקייפ או במוזילה ?

  7. ניר טייב הגיב:

    ועוד משהו
    מה זה בקוד שתיקנת לי הדבר הזה :

    array[i].nNam = i

    מה זה ה-nNam הזה ?

  8. זה מאפיין מותאם אישית
    בדיוק בגלל זה זה יעבוד רק ב-IE.
    אם תרצה שיעבוד גם במוזילת ושו"ת – תצטרך לבנות את הפונק’ והכפתורים שלך בצורה שונה, ולשלוח לה את האינדקס במערך שאתה רוצה להציג.

  9. ניר טייב הגיב:

    טוב…
    אני אנסה לעשות זאת. בעקרון אני רוצה למצוא דרך טובה ב-JS ולא לכתוב HTML משתי סיבות
    – אני רוצה להתקדם ב-JS
    – אני רוצה להפחית את קוד ה-HTML

  10. ניר טייב הגיב:

    שיניתי את הפונקציה…
    וזה נותן שגיאה הנה הפונקציה

    function EmoBar2(Events,id,smileNum){ //remark – Events = Load OR Click
    var strImg, i;
    i = parseInt(0);
    strImg = new String();
    switch (Events){
    case "Load":
    var EmoBox = document.getElementById(id);
    for (i=0;i<=10;i++){
    strImg += "<img src=’smile/" + i + ".gif’ border=’0′ onClick=EmoBar(‘Click’,’message’," + i

    + ") class=’emoBar’ /> ";
    }
    EmoBox.innerHTML = strImg;
    break;
    case "Click":
    var oMessageBox = document.getElementById(id);
    oMessageBox.focus();
    var oRange = document.selection.createRange();
    if (oRange.text!=null)
    oRange.text += emoArr[parseInt(smileNum)];
    break;
    }
    }

    הפונקציה בעצם מקבלת שלושה פרמטרים
    Events שאני מקצה לו רק Click ו-Load
    ID – שמקבל את ה-ID של תיבת הסמיילים או של ה-textArea
    smileNum – מס’ או ערך ריק
    בפונקציה אני מבצע התניית SWITCH CASE על הפרמטר Events
    Load – מציג את הסמיילים בתוך תיבת ה-סמיילים (div)
    Click – מכניס ל-textArea את המחרוזת המתאימה לפי המערך והפרמטר smileNum

    החלק של Load עובד מצוין אבל החלק של Click נותן לי את השגיאה הבאה

    Erroe: ‘null’ is null or not an object

    תודה רבה לכל העוזרים.

  11. ניר טייב הגיב:

    טעות קלה…
    הרצתי את ה-debuger של ה-IE וזה היה בפונקציה אחרת בכל מקרה עדיין יש בעייה זה מחזיר לי את השגיאה הבאה

    object Expected

    אני יודע מה זה אומר אבל לא הצלחתי למצוא את זה בקוד שלי
    אתם יכולים לראות בקובץ המצורף.

  12. ניר טייב הגיב:

    הסתדרתי
    הגדרתי שבלחיצה על התמונה זה יעבור לפונקציה לא קיימת

    תודה לכל העוזרים!!!

  13. ניר טייב הגיב:

    שאלה חדשה
    עשיתי את הקוד הבא (עם regExp)

    function replaceToSmile(strMessage,strReplace,id){
    var sStr = new String(strMessage);
    var rExp = new RegExp("/" + strReplace,"gi")
    var strImg = new String("<img src=’smile/" + id + ".gif’ border=’0′ />")
    return sStr.replace(rExp,strImg);
    }
    var Img = new replaceToSmile("nir the king ","",0);
    document.write(Img);

    וכשהפעלתי הופיעה לי השגיאה

    Syntax erroe in regular expression

    איך אני מתקן את הקוד כי אני דיי חדש בנושא

  14. ניר טייב הגיב:

    לא הבנתי משהו קטן
    אם הסלאש () מציין את שהתו שבא אחריו כתו בפני עצמו אז למה צריך לעשות שני סלאשים

    var Img = replaceToSmile("nir the king ",":-\)",0);

    תודה על העזרה ניר

  15. ניר טייב הגיב:

    אפילו ב-MSDN
    ב-MSDN כתוב שצמד התווים הבא יהווה את ה-( כסימן מיוחד


    (

    ציטוט

    Marks the next character as a special character, a literal, a backreference, or an octal escape. For example, ‘n’ matches the character "n". ‘n’ matches a newline character. The sequence ‘\’ matches "" and "(" matches "(".

  16. ניר טייב הגיב:

    ועוד שאלה ב-regExp
    שתירגמתי את המשמעות של הסימון r אז קיבלתי את שני תרגומים והנה הם :::
    curriage return –
    (מחשבים) מקש שמחזיר את הסמן לתחילת השורה;
    (מחשבים) מקש שזהה למקש ה- Enter;

    איזה מבין הפירושים מהווה את הסימון

    r

    ???

  17. Pose 69 הגיב:

    שניהם, בערך…
    מקש ה Enter מורכב למעשה משני תווים,
    Curriage Return ו Line Feed,
    כאשר Line Feed מוריד את הסמן שורה, ו Curriage Return מחזיר אותו
    לתחילת השורה.

  18. בגלל שזה בתוך מחרוזת
    יש צורך גם להכפיל את ה- כדי שהוא ידע להתייחס לזה בתור escape ולא בתור התו עצמו.

  19. ניר טייב הגיב:

    בעייה מוזרה מאוד
    אני בניתי טופס שנשלח לעמוד ASP מסוים בשיטה Post
    בעמוד ה-ASP ביצעתי בדיקת IF (הקוד כתוב ב-JS)

    if (Request.Form("subject").length<=0){
    Response.Write("<center>")
    Response.Write("בבקשה כתוב נושא")
    Response.Write("<br><a href=’javascript:history.back()’>חזור</a>")
    Response.Write("</center>")
    Response.End()
    }

    שלחתי את הטופסנ ללא שום נתון. כל השדות ריקים וזה לא החזיר לי שום טקסט
    שצריך להיות מוחזר ע"י הבדיקה וגם אין שום הודעת שגיאה! אז מה לא נכון בקוד שלי <???

  20. ניר טייב הגיב:

    הסתדרתי
    שכחתי לכתוב את הסוגריים שמעבירות את המאפיינים והשיטות לאובייקט

  21. ניר טייב הגיב:

    עוד שאלה
    איך אני עושה רפלייס לירידת שורה ב-JS ??? (לא ב-VBS)

  22. ניר טייב הגיב:

    שאלה לגבי הפורום
    איך אתם שומרים על רווח קבוע ברקורסיה יענו יש דבר כזה _אל תתייחסו לסלאשים זה רק בשביל שזה יעבוד)


    \-
    \-
    \\-
    \\-
    \\\-

    כי אני כשאני עושה את ה-padding זה בסוף נראה כמו מגלשה ולא כמו אלכסום ישר.

    ועוד שאלה :
    למה כשאני מכניס הודעה (אצלי) אז זה חותך אותה ולא מראה את כולה ?
    האם זה יכול להיות בגלל ה-JS ?

  23. אין סיבה שזה יהיה מגלשה
    ראה קובץ מצורף.

    את השאלה השניה לא הבנתי.

  24. ניר טייב הגיב:

    הא הבנתי והסבר לשני
    אני פשוט סגרתי את ה-div של כל הודעה ועשיתי כך טוב מובן.
    וההסבר
    נגיד אני כותב: חחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחח

    אז זה מראה רק כך :
    חחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחח

    למרות שמה שאני כתבתי נמצא ב-DB כמו שהוא אבל בתצוגה זה חוצה את זה
    וזה ממש חותך לי את כל ההודעה

  25. אוריקס הגיב:

    תשלח לפונקציה משתנה
    שייציין את עומק הרקורסיה.

שלח תשובה