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

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

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

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

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

    יש לי פונקציית חיפוש בטבלת HTML בשפת ג'אווה סקיפט, והחיפוש מחפשת רק בעמודה מסויימת הטבלה האם אפשר להגדיר שיחפש בכל העמודות?! (לי יש רק שתי עמודות, אז מספיק לי שיחפש רק בשני העמודות הראשונות.

    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++) {
        td = 
    tr[i].getElementsByTagName("td")[0];
        if (td) {
          txtValue = td.textContent || td.innerText;
          if (txtValue.toUpperCase().indexOf(filter) > -1) {
            tr[i].style.display = "";
    		cnt = cnt + 1 ;
          } else {
            tr[i].style.display = "none";
          }
        }       
      }
    

    בשורה הזאת

    tr[i].getElementsByTagName("td")[0];
    

    אם אני כותב בסוף [0] הוא מחפש בעמודה הראשונה, אם אני כותב [1] אז מחפש בעמודה השניה, וכן הלאה, השאלה איך אני עושה שיחפש בכל העמודות.

    yossizY תגובה 1 תגובה אחרונה
    0
    • חנון המרבהח חנון המרבה

      יש לי פונקציית חיפוש בטבלת HTML בשפת ג'אווה סקיפט, והחיפוש מחפשת רק בעמודה מסויימת הטבלה האם אפשר להגדיר שיחפש בכל העמודות?! (לי יש רק שתי עמודות, אז מספיק לי שיחפש רק בשני העמודות הראשונות.

      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++) {
          td = 
      tr[i].getElementsByTagName("td")[0];
          if (td) {
            txtValue = td.textContent || td.innerText;
            if (txtValue.toUpperCase().indexOf(filter) > -1) {
              tr[i].style.display = "";
      		cnt = cnt + 1 ;
            } else {
              tr[i].style.display = "none";
            }
          }       
        }
      

      בשורה הזאת

      tr[i].getElementsByTagName("td")[0];
      

      אם אני כותב בסוף [0] הוא מחפש בעמודה הראשונה, אם אני כותב [1] אז מחפש בעמודה השניה, וכן הלאה, השאלה איך אני עושה שיחפש בכל העמודות.

      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
        • dovidD dovid

          @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";
                  }
              }
          }
          
          א מנותק
          א מנותק
          אהרן
          כתב ב נערך לאחרונה על ידי
          #4

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

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

          מה i מכיל?

          dovidD תגובה 1 תגובה אחרונה
          1
          • א אהרן

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

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

            מה i מכיל?

            dovidD מנותק
            dovidD מנותק
            dovid
            ניהול
            כתב ב נערך לאחרונה על ידי
            #5

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

            • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
            • בכל נושא אפשר ליצור קשר dovid@tchumim.com
            א תגובה 1 תגובה אחרונה
            1
            • dovidD dovid

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

              א מנותק
              א מנותק
              אהרן
              כתב ב נערך לאחרונה על ידי
              #6

              @dovid
              אפשר גם

                  var checkOneRow = (tr) => {
                      return [ ...tr.getElementsByTagName("td") ]
                              .filter(curTd => curTd.innerText.toUpperCase().indexOf(filter) > -1)
                              .length
                  }
              
              dovidD תגובה 1 תגובה אחרונה
              0
              • א אהרן

                @dovid
                אפשר גם

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

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

                • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                א תגובה 1 תגובה אחרונה
                1
                • dovidD dovid

                  @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";
                          }
                      }
                  }
                  
                  yossizY מנותק
                  yossizY מנותק
                  yossiz
                  כתב ב נערך לאחרונה על ידי
                  #8

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

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

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

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

                  dovidD תגובה 1 תגובה אחרונה
                  2
                  • dovidD dovid

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

                    א מנותק
                    א מנותק
                    אהרן
                    כתב ב נערך לאחרונה על ידי
                    #9

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

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

                    אשמח לדוגמא.

                    תגובה 1 תגובה אחרונה
                    0
                    • yossizY yossiz

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

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

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

                      dovidD מנותק
                      dovidD מנותק
                      dovid
                      ניהול
                      כתב ב נערך לאחרונה על ידי
                      #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
                      • dovidD dovid

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

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

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

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

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

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

                        אשמח לדוגמא.

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

                        return [...tr.getElementsByTagName("td")].some(e => e.innerText.includes(filter));
                        
                        א מנותק
                        א מנותק
                        אהרן
                        כתב ב נערך לאחרונה על ידי
                        #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
                        • א אהרן

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

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

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

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

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

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

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

                          אשמח לדוגמא.

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

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

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

                          dovidD מנותק
                          dovidD מנותק
                          dovid
                          ניהול
                          כתב ב נערך לאחרונה על ידי dovid
                          #12

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

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

                          • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                          • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                          תגובה 1 תגובה אחרונה
                          3
                          • dovidD dovid העביר נושא זה מ-תכנות ב-
                          תגובה
                          • תגובה כנושא
                          התחברו כדי לפרסם תגובה
                          • מהישן לחדש
                          • מהחדש לישן
                          • הכי הרבה הצבעות


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

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

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