ניווט

    תחומים
    • הרשמה
    • התחברות
    • חיפוש
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    • מקצועות
    חוקי הפורום

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

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

      כשהראשון נמצא לבד, הוא עובד חלק, וכשאני שם את השני, הראשון מפסיק לעבוד ורק השני עובד. יש שם איזה קטע שמריח לי שהוא הבעייתי, אבל אני לא מספיק מבין בתחביר 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;
      }
      
      י chv 2 תגובות תגובה אחרונה תגובה ציטוט 0
      • י
        יוסף בן שמעון @מוטי מן נערך לאחרונה על ידי

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

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

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

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

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

        window.onscroll = function() {myFunction(); scrollFunction()};
        
        מוטי מן yossiz 2 תגובות תגובה אחרונה תגובה ציטוט 4
        • chv
          chv @מוטי מן נערך לאחרונה על ידי chv

          @מוטי-מן זה מפוצל לשני חלקים בכוונה?
          בנוגע לבעיה בקוד שלך - היא פשוטה, כיוון שקראת לפונקציות פעמיים כלומר בעצם התייחסת בקוד פעמיים לאירוע של 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
          • מוטי מן
            מוטי מן @יוסף בן שמעון נערך לאחרונה על ידי מוטי מן

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

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

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

            תגובה 1 תגובה אחרונה תגובה ציטוט 1
            • yossiz
              yossiz @יוסף בן שמעון נערך לאחרונה על ידי yossiz

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

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

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

              window.addEventListener('scroll', myFunction);
              

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

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

              כותבים פשוט:

              window.onscroll = myFunction;
              
              תגובה 1 תגובה אחרונה תגובה ציטוט 9
              • 1 / 1
              • First post
                Last post
              בא תתחבר לדף היומי!