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

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. שאלה ב JS מוטמעת ב HTML

שאלה ב JS מוטמעת ב HTML

מתוזמן נעוץ נעול הועבר תכנות
12 פוסטים 4 כותבים 395 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • yossizY מנותק
    yossizY מנותק
    yossiz
    השיב לחנון המרבה ב נערך לאחרונה על ידי yossiz
    #2

    @חנון-המרבה

    function Search() {
      var input, filter, table, tr, td, i, txtValue;
      var cnt = 0;
      input = document.getElementById("myInput");
      filter = input.value.toUpperCase();
      table = document.getElementById("myTable7");
      tr = table.getElementsByTagName("tr");
      for (i = 0; i < tr.length; i++) {
        let found = false;
        td = tr[i].getElementsByTagName("td");
        for (let j = 0; i < td.length; j++) {
          if (td[j]) {
            txtValue = td[j].textContent || td[j].innerText;
            if (txtValue.toUpperCase().indexOf(filter) > -1) {
              cnt = cnt + 1;
              found = true;
            }
          }
        }
        if (found) {
          tr[i].style.display = "";
        } else {
          tr[i].style.display = "none";
        }
      }
    }
    
    

    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

    תגובה 1 תגובה אחרונה
    4
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי dovid
      #3

      @yossiz אמר בשאלה ב JS מוטמעת ב HTML:

      myTable7

      הקוד של @yossiz בנוי באופן שרוצים לספור גם כמה תוצאות בתוך אותה שורה (למרות שבקוד שהוצג לא נעשה שימוש בספירה הזו),
      וממילא הוא חייב לעבור על כל העמודות (אוי ואבוי 🙂 ).
      אם זה לא חשוב יש לצאת מהלולאה הפנימית במקרה של מציאה ע"י brake.
      כמו"כ לא הבנתי למה השתמשו בtextContent, למה לא רק בinnerText שיותר מתאים למטרה פה.
      שכתבתי את הקוד לספירת שורות בלבד, וגם קצת שיניתי אותו לטעמי:

       Search("myTable7", "myInput");
      
      function Search(tableId, inputId) {
          var input = document.getElementById(tableId);
          var table = document.getElementById(inputId);
      
          var filter = input.value.toUpperCase();
      
          var checkOneRow = function (tr) {
              var td = tr.getElementsByTagName("td");
      
              for (let j = 0; i < td.length; j++)
                  if (td[j].innerText.toUpperCase().indexOf(filter) > -1)
                      return true;
          }
      
          var cnt = 0;
          var tr = table.getElementsByTagName("tr");
          for (i = 0; i < tr.length; i++) {
              if (checkOneRow(tr[i])) {
                  cnt++;
                  tr[i].style.display = "";
              } else {
                  tr[i].style.display = "none";
              }
          }
      }
      

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      א yossizY 2 תגובות תגובה אחרונה
      3
      • א מנותק
        א מנותק
        אהרן
        השיב לdovid ב נערך לאחרונה על ידי
        #4

        @dovid אמר בשאלה ב JS מוטמעת ב HTML:

        var td = tr[i].getElementsByTagName("td");

        מה i מכיל?

        dovidD תגובה 1 תגובה אחרונה
        1
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          השיב לאהרן ב נערך לאחרונה על ידי
          #5

          @אהרן צודק תיקנתי.

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          א תגובה 1 תגובה אחרונה
          1
          • א מנותק
            א מנותק
            אהרן
            השיב לdovid ב נערך לאחרונה על ידי
            #6

            @dovid
            אפשר גם

                var checkOneRow = (tr) => {
                    return [ ...tr.getElementsByTagName("td") ]
                            .filter(curTd => curTd.innerText.toUpperCase().indexOf(filter) > -1)
                            .length
                }
            
            dovidD תגובה 1 תגובה אחרונה
            0
            • dovidD מנותק
              dovidD מנותק
              dovid ניהול
              השיב לאהרן ב נערך לאחרונה על ידי dovid
              #7

              @אהרן אפשר הרבה יותר מזה (find וגם includes שניהם חוסכים גם ביצועים) אבל זה נראה שהלכו פה עם ES5 ומטה.
              כמו"כ כתבתי שהקוד שלי בא לחסוך מעבר מיותר על כל הtd, ואיבדת את זה.

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              א תגובה 1 תגובה אחרונה
              1
              • yossizY מנותק
                yossizY מנותק
                yossiz
                השיב לdovid ב נערך לאחרונה על ידי
                #8

                @dovid אמר בשאלה ב JS מוטמעת ב HTML:

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

                נכון, שמתי לב לכל זה. רציתי לעשות כמה שפחות שינויים למבנה הקוד.

                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                dovidD תגובה 1 תגובה אחרונה
                2
                • א מנותק
                  א מנותק
                  אהרן
                  השיב לdovid ב נערך לאחרונה על ידי
                  #9

                  @dovid אמר בשאלה ב JS מוטמעת ב HTML:

                  אפשר הרבה יותר מזה

                  אשמח לדוגמא.

                  תגובה 1 תגובה אחרונה
                  0
                  • dovidD מנותק
                    dovidD מנותק
                    dovid ניהול
                    השיב לyossiz ב נערך לאחרונה על ידי
                    #10

                    @yossiz אמר בשאלה ב JS מוטמעת ב HTML:

                    נכון, שמתי לב לכל זה. רציתי לעשות כמה שפחות שינויים למבנה הקוד.

                    ברור, רק שיתפתי את השואל בנקודה הזו.

                    @אהרן אמר בשאלה ב JS מוטמעת ב HTML:

                    @dovid אמר בשאלה ב JS מוטמעת ב HTML:

                    אפשר הרבה יותר מזה

                    אשמח לדוגמא.

                    אני התכוונתי לבדוק בfind אם ריק אבל אח"כ נזכרתי בsome שעושה בדיוק את זה, הוא מחזיר חיובי מייד במקרה הראשון של הצלחה:

                    return [...tr.getElementsByTagName("td")].some(e => e.innerText.includes(filter));
                    

                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                    א תגובה 1 תגובה אחרונה
                    3
                    • א מנותק
                      א מנותק
                      אהרן
                      השיב לdovid ב נערך לאחרונה על ידי
                      #11

                      @dovid אמר בשאלה ב JS מוטמעת ב HTML:

                      @yossiz אמר בשאלה ב JS מוטמעת ב HTML:

                      נכון, שמתי לב לכל זה. רציתי לעשות כמה שפחות שינויים למבנה הקוד.

                      ברור, רק שיתפתי את השואל בנקודה הזו.

                      @אהרן אמר בשאלה ב JS מוטמעת ב HTML:

                      @dovid אמר בשאלה ב JS מוטמעת ב HTML:

                      אפשר הרבה יותר מזה

                      אשמח לדוגמא.

                      אני התכוונתי לבדוק בfind אם ריק אבל אח"כ נזכרתי בsome שעושה בדיוק את זה, הוא מחזיר חיובי מייד במקרה הראשון של הצלחה:

                      return [...tr.getElementsByTagName("td")].some(e => e.innerText.includes(filter));
                      

                      זה יותר קצר?
                      נראה שרק בתווים בודדים.

                      dovidD תגובה 1 תגובה אחרונה
                      0
                      • dovidD מנותק
                        dovidD מנותק
                        dovid ניהול
                        השיב לאהרן ב נערך לאחרונה על ידי dovid
                        #12

                        @אהרן זה לא בא לקצר...
                        תקרא את מה שכתבתי.
                        אם נדקדק פה על קוצו של יוד, אז גם Array.from (שזה בעצם ה [...]) כנראה פחות יעיל מלולאה.
                        אבל לא נכנסתי לזה, כי קריאות דוחה ביצועים בכלל ובצד לקוח בפרט.

                        עריכה: לחיסכון בArray.from ראה https://tchumim.com/topic/9259 .

                        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                        בכל נושא אפשר ליצור קשר dovid@tchumim.com

                        תגובה 1 תגובה אחרונה
                        3
                        • dovidD dovid העביר נושא זה מ-תכנות ב-

                        בא תתחבר לדף היומי!
                        • התחברות

                        • אין לך חשבון עדיין? הרשמה

                        • התחברו או הירשמו כדי לחפש.
                        • פוסט ראשון
                          פוסט אחרון
                        0
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום