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

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

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

שני סקריפטים JS שמתנגשים

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

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

    הראשון. הצמדה של שורת הכותרת.

    window.onscroll = function() {myFunction()};
    
    var header = document.getElementById("myHeader");
    var sticky = header.offsetTop;
    
    function myFunction() {
      if (window.pageYOffset > sticky) {
        header.classList.add("sticky");
      } else {
        header.classList.remove("sticky");
      }
    }
    

    השני. לחצן גלול למעלה.

    var mybutton = document.getElementById("myBtn");
    
    window.onscroll = function() {scrollFunction()};
    
    function scrollFunction() {
      if (document.body.scrollTop > 40 || document.documentElement.scrollTop > 40) {
        mybutton.style.display = "block";
      } else {
        mybutton.style.display = "none";
      }
    }
    
    function topFunction() {
      document.body.scrollTop = 0;
      document.documentElement.scrollTop = 0;
    }
    
    י chvC 2 תגובות תגובה אחרונה
    0
    • י מנותק
      י מנותק
      יוסף בן שמעון
      השיב למוטי מן ב נערך לאחרונה על ידי
      #2

      @מוטי-מן השורה הזו

      window.onscroll = function() {scrollFunction()};
      

      אומרת שהאירוע של הגלילה יפעיל את הפונקציה scrollFunction
      וזו

      window.onscroll = function() {myFunction()};
      

      אומרת שהוא יפעיל את הפונקציה myFunction
      אז אחד מהם דורס את השני.
      מה שאפשר לעשות, שהפונקציה האנונימית תקרא לשני הפונקציות הנ"ל

      window.onscroll = function() {myFunction(); scrollFunction()};
      
      מוטי מןמ yossizY 2 תגובות תגובה אחרונה
      4
      • chvC מנותק
        chvC מנותק
        chv
        השיב למוטי מן ב נערך לאחרונה על ידי chv
        #3

        @מוטי-מן זה מפוצל לשני חלקים בכוונה?
        בנוגע לבעיה בקוד שלך - היא פשוטה, כיוון שקראת לפונקציות פעמיים כלומר בעצם התייחסת בקוד פעמיים לאירוע של window.onscroll - האירוע הראשון נדרס אוטומטית (למה הראשון ולא השני? ככה זה בגלל צורת העבודה של JS, גגל את זה).
        אפשר פשוט לקרוא לכמה פונקציות שאתה רוצה בפעם אחת, זה יהיה בערך ככה:

        window.onscroll = function() {
          myFunction(); 
          scrollFunction();
        };
        
        var header = document.getElementById("myHeader");
        var mybutton = document.getElementById("myBtn");
        var sticky = header.offsetTop;
        
        function myFunction() {
          if (window.pageYOffset > sticky) {
            header.classList.add("sticky");
          } else {
            header.classList.remove("sticky");
          }
        }
        
        function scrollFunction() {
          if (document.body.scrollTop > 40 || document.documentElement.scrollTop > 40) {
            mybutton.style.display = "block";
          } else {
            mybutton.style.display = "none";
          }
        }
        
        function topFunction() {
          document.body.scrollTop = 0;
          document.documentElement.scrollTop = 0;
        }
        

        נ.ב. אני מבין שבHTML עצמו כתבת לכפתור עם ה-id בשם "myBtn" תכונה כזו - "()onclick="topFunction

        עריכה - שניה אחרי שהעליתי את הפוסט ראיתי ש @יוסף-בן-שמעון כבר כתב לך, ויותר ברור..

        בלוג | מייל

        תגובה 1 תגובה אחרונה
        4
        • מוטי מןמ מנותק
          מוטי מןמ מנותק
          מוטי מן
          השיב ליוסף בן שמעון ב נערך לאחרונה על ידי מוטי מן
          #4

          @יוסף-בן-שמעון אמר בשני סקריפטים JS שמתנגשים:

          מה שאפשר לעשות, שהפונקציה האנונימית תקרא לשני הפונקציות הנ"ל
          window.onscroll = function() {myFunction(); scrollFunction()};

          @יוסף-בן-שמעון תודה על ההסבר, לא חשבתי שיש בעיה לעשות שאירוע אחד יקרא לכמה פונקציות בשני משפטים.
          @chv זה מפוצל בכוונה, זה שני קבצי js נפרדים. (עכשיו כבר לא כ"כ 🙂 )

          תגובה 1 תגובה אחרונה
          1
          • yossizY מנותק
            yossizY מנותק
            yossiz
            השיב ליוסף בן שמעון ב נערך לאחרונה על ידי yossiz
            #5

            @יוסף-בן-שמעון אמר בשני סקריפטים JS שמתנגשים:

            אז אחד מהם דורס את השני.
            מה שאפשר לעשות, שהפונקציה האנונימית תקרא לשני הפונקציות הנ"ל

            אפשר גם (מומלץ) להשתמש ב-addEventListener שלא דורס.

            window.addEventListener('scroll', myFunction);
            

            אגב, זה מיותר לעטוף את הפונקציה בעוד פונקציה:

            window.onscroll = function() {myFunction()};
            

            כותבים פשוט:

            window.onscroll = myFunction;
            

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

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

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

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

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