מה לא טוב בקוד? (js)

  • הוסף לסימניות
  • #1
This user does not have permission to use the HTML BB code.

מה אמור להיות?
כשהמשתמש לוחץ על האלמנט החלון יגלל מטה בפעימות של 100 פיקסל הפונקציה תחזור על עצמה כל עוד העכבר לחוץ.
 
  • הוסף לסימניות
  • #3
יש כאן כמה טעויות.
אם תנסה לעשות DEBUG תראה אותן אחת אחת.
קודם כל הסקריטפ שלך מופיע לפני שהופיע האלמנט שעליו לוחצים. ולכן בנקודת הזמן שרץ הסקריפט הוא לא מכיר את האלמנט הזה. שגיאה זו מופיעה בקונסול.

דבר שני.
האירוע הזה:
document.getElementById("down").onmousedown
יקרה לפני האירוע
document.body.onmousedown
שכן האלמנט עם ID הוא יותר פנימי.
ולכן לעולם לא יקרה מה שאתה מנסה לעשות:
mouseDown = 1;
ואז, כמובן, שום דבר לא יעבוד

דבר שלישי
ל- scrollBy
אי אפשר למסור אובייקט עם behavior
כנראה שהתכוונת ל
window.scrollTo(options)

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

דבר שני.
האירוע הזה:
document.getElementById("down").onmousedown
יקרה לפני האירוע
document.body.onmousedown
שכן האלמנט עם ID הוא יותר פנימי.
ולכן לעולם לא יקרה מה שאתה מנסה לעשות:
mouseDown = 1;
ואז, כמובן, שום דבר לא יעבוד
אם אני יהפוך את הbody לid זה כן אמור לעבוד?
כלומר כך:
This user does not have permission to use the HTML BB code.

דבר שלישי
ל- scrollBy
אי אפשר למסור אובייקט עם behavior
כנראה שהתכוונת ל
window.scrollTo(options)
במחילה אם זה אני לא מסכים!
לא בגלל שאני יודע יותר טוב ממך אלא פשוט ניסיתי את זה בתוך התגית עצמה כך:
This user does not have permission to use the HTML BB code.
וזה עבד מצויין!
 
  • הוסף לסימניות
  • #7
נערך לאחרונה ב:
  • הוסף לסימניות
  • #8
זה לאחר תיקונים והצעות של החברים בפורום:
מה בכל זאת לא טוב בזה? (פשוט זה לא עובד)
This user does not have permission to use the HTML BB code.
 
  • הוסף לסימניות
  • #9
לא קראתי את כל הקוד
אבל אולי פשוט להכניס את הכתיבה שלו לאחר ה-LOAD של העמוד
אולי הפרמטר שאתה מנסה לקבל עוד לא קיים כשהקוד נכתב?
 
  • הוסף לסימניות
  • #10
בedge ניסיתי וזה עבד

ובקשר לקוד (כמו שכתבתי לאחר התיקונים שהצעת) למה הוא לא עובד גם לא בכרום?
זה לא עובד לך משתי סיבות.
א. צריך לרשום scrollBy ולא scrollby

ב. אם אתה לומד JS, אז הנקודה הבאה מאוד כדאי להתעמק בה (זה סוג בעיה שקורה המון אצל המתחילים, ולא רק)
תראה את הקטע קוד (שלך) הזה [דרך אגב, אם מישהו יכול לדבר עם הנהלת הפרוג שיגדירו את כיוון קטעי הקוד משמאל לימין - תבוא עליו ברכה]
while (mouseDown == 1)
{window.scrollby({top: 1800, left: 0, behavior: 'smooth' });}}

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

ההפעלה הבאה של הלולאה צריכה להתבצע רק אחרי שה-scrollBy הראשון הסתיים.

תראה, למשל את הקוד הזה.
הוא עובד תקין.
<script type="text/javascript">


let counter = 0;

var mouseDown = 0;

document.getElementById("down").onmouseup = function() {
mouseDown = 0;
}
document.getElementById("down").onmousedown =
function(){
mouseDown = 1;
while (mouseDown == 1 && counter<10)
{
counter++;
window.scrollBy({top: 1800, left: 0, behavior: 'smooth' });
}
}


</script>
 
  • תודה
Reactions: UU
  • הוסף לסימניות
  • #11
תראה, למשל את הקוד הזה.
הוא עובד תקין.
בדקת? לי זה לא עובד
בדרימוויאור של אדובי הוא כותב תקלה על השורה שלThis user does not have permission to use the HTML BB code.
כך:
unexpected token countor
 
  • הוסף לסימניות
  • #12
במקום let תכתוב var
וזה ממש לא אומר שהקוד לא עובד...
 
  • הוסף לסימניות
  • #13
במקום let תכתוב var
וזה ממש לא אומר שהקוד לא עובד...
אין קשר, הקוד לא עובד כי ניסיתי, חוץ מזה הדרימוויאור רושם שגיאה....
 
  • הוסף לסימניות
  • #14
לא קראתי את כל הקוד
אבל אולי פשוט להכניס את הכתיבה שלו לאחר ה-LOAD של העמוד
אולי הפרמטר שאתה מנסה לקבל עוד לא קיים כשהקוד נכתב?
ניסיתי להכניס אותו בסוף הbody או מה שנקרא footer
 
  • הוסף לסימניות
  • #15
אין קשר, הקוד לא עובד כי ניסיתי, חוץ מזה הדרימוויאור רושם שגיאה....
@UU צודק. אתה משתמש בתוכנה מיושנת לכן היא לא מכירה את הסטנדרט החדש של JS
מה שפעם סימנו ב-VAR היום מסמנים בLET או בCONST
אבל VAR עובד בכל מקום. כך שאם תחליף LET לVAR זה אמור לעבוד גם בדרימבוובר. וכפי שכתב UU
 
  • הוסף לסימניות
  • #16
@UU צודק. אתה משתמש בתוכנה מיושנת לכן היא לא מכירה את הסטנדרט החדש של JS
מה שפעם סימנו ב-VAR היום מסמנים בLET או בCONST
אבל VAR עובד בכל מקום. כך שאם תחליף LET לVAR זה אמור לעבוד גם בדרימבוובר. וכפי שכתב UU
אני תוהה... כתבתי אותו באתר וורדפרס וזה לא עובד לי...:(
האם ניסיתם את הקוד הזה באמיתי?

שנית, אשמח לדעת מה השתנה כשהוספת את המשתנה ההוא, מה שבסך הכל יקרה - כך נראה לי לפי הבנתי הדלה - שהאו יעשה את הפעולה מקס' 10 פעמים
אך כמו שכתבת לכאורה הוא גם לא יעשה פחות כי הקוד רץ מיד כשהעכבר ירד ואפ' לשנייה...

בעצם ברעיון זה אכן נכון שיש בעיה בעצם הקוד שהוא כבר נשלח לפני שהסתיים הגלילה הראשונה, אז איך באמת נותנים לו את ההוראה שיחכה עם הלולאה לסיום הגלילה?
(שוב, כל זה בתנאי שזה יעבוד כי לעת עתה ניסיתי וזה לא מעוניין להגיב.)
 
  • הוסף לסימניות
  • #17
אם זה לא עובד לך, כנראה שיש לך איזו טעות אחרת.
הקוד שרשמתי עובד כפי שמצופה ממנו
בבקשה: https://jsfiddle.net/s976/j52ukqrp/
 
  • הוסף לסימניות
  • #18
ניסיתי להכניס אותו בסוף הbody או מה שנקרא footer
זה עדיין נשמע שהקוד לא מכיר את המשתנה
בטוח שהID הזה קיים לפני טעינת כל העמוד? אולי הוא מגיע בעצמו מ-JS?
נסה לבצע על סלקטור אחר שבטוח בה בעמוד (לוגו לדוגמא) ונראה תוצאות
בפרט שיש פה מישהו שכותב שהקוד עובד
 
  • הוסף לסימניות
  • #19
אם זה לא עובד לך, כנראה שיש לך איזו טעות אחרת.
הקוד שרשמתי עובד כפי שמצופה ממנו
בבקשה: https://jsfiddle.net/s976/j52ukqrp/
כן, אתה צודק במה שעשית זה עובד קצת יותר טוב מאצלי, מה שאצלי בכלל לא מגיב אצלך עושה את הקוד פעם אחת! (נסה להוריד את הפיקסלים בtop ל10).
 
  • הוסף לסימניות
  • #20
זה עדיין נשמע שהקוד לא מכיר את המשתנה
בטוח שהID הזה קיים לפני טעינת כל העמוד? אולי הוא מגיע בעצמו מ-JS?
נסה לבצע על סלקטור אחר שבטוח בה בעמוד (לוגו לדוגמא) ונראה תוצאות
בפרט שיש פה מישהו שכותב שהקוד עובד
הid באמצע הbody והסקריפט בא בסופו של הbody
 

פרוגבוט

תוכן שיווקי
פרסומת

אשכולות דומים

רוצים להישאר בעניינים?

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

מה תמצאו בניוזלטר של פרוג?


✅ ריכוז תכנים מעניינים בנושא החודש.

✅ טיפים ומאמרים שניתן לקרוא רק בניוזלטר של פרוג!

✅ עדכונים על אירועי קהילה ושיתופי פעולה.

✅ זרקור על פינה בפרוג שטרם הספקתם להכיר.

✅ בקרוב! פינות נוספות בעז"ה.



להרשמה מהירה מלאו פרטים בטופס פה, (ניתן להסיר עצמכם בכל עת):

איזה כיף שהצטרפת אלינו!

Success

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

  • תודה
Reactions: לב נשבר1 //
1 תגובות

הצטרפות לניוזלטר

איזה כיף שהצטרפתם לניוזלטר שלנו!

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

לוח מודעות

הפרק היומי

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


תהילים פרק כה

אלְדָוִד אֵלֶיךָ יי נַפְשִׁי אֶשָּׂא:באֱלֹהַי בְּךָ בָטַחְתִּי אַל אֵבוֹשָׁה אַל יַעַלְצוּ אֹיְבַי לִי:גגַּם כָּל קוֶֹיךָ לֹא יֵבֹשׁוּ יֵבֹשׁוּ הַבּוֹגְדִים רֵיקָם:דדְּרָכֶיךָ יי הוֹדִיעֵנִי אֹרְחוֹתֶיךָ לַמְּדֵנִי:ההַדְרִיכֵנִי בַאֲמִתֶּךָ וְלַמְּדֵנִי כִּי אַתָּה אֱלֹהֵי יִשְׁעִי אוֹתְךָ קִוִּיתִי כָּל הַיּוֹם:וזְכֹר רַחֲמֶיךָ יי וַחֲסָדֶיךָ כִּי מֵעוֹלָם הֵמָּה:זחַטֹּאות נְעוּרַי וּפְשָׁעַי אַל תִּזְכֹּר כְּחַסְדְּךָ זְכָר לִי אַתָּה לְמַעַן טוּבְךָ יי:חטוֹב וְיָשָׁר יי עַל כֵּן יוֹרֶה חַטָּאִים בַּדָּרֶךְ:טיַדְרֵךְ עֲנָוִים בַּמִּשְׁפָּט וִילַמֵּד עֲנָוִים דַּרְכּוֹ:יכָּל אָרְחוֹת יי חֶסֶד וֶאֱמֶת לְנֹצְרֵי בְרִיתוֹ וְעֵדֹתָיו:יאלְמַעַן שִׁמְךָ יי וְסָלַחְתָּ לַעֲוֹנִי כִּי רַב הוּא:יבמִי זֶה הָאִישׁ יְרֵא יי יוֹרֶנּוּ בְּדֶרֶךְ יִבְחָר:יגנַפְשׁוֹ בְּטוֹב תָּלִין וְזַרְעוֹ יִירַשׁ אָרֶץ:ידסוֹד יי לִירֵאָיו וּבְרִיתוֹ לְהוֹדִיעָם:טועֵינַי תָּמִיד אֶל יי כִּי הוּא יוֹצִיא מֵרֶשֶׁת רַגְלָי:טזפְּנֵה אֵלַי וְחָנֵּנִי כִּי יָחִיד וְעָנִי אָנִי:יזצָרוֹת לְבָבִי הִרְחִיבוּ מִמְּצוּקוֹתַי הוֹצִיאֵנִי:יחרְאֵה עָנְיִי וַעֲמָלִי וְשָׂא לְכָל חַטֹּאותָי:יטרְאֵה אוֹיְבַי כִּי רָבּוּ וְשִׂנְאַת חָמָס שְׂנֵאוּנִי:כשָׁמְרָה נַפְשִׁי וְהַצִּילֵנִי אַל אֵבוֹשׁ כִּי חָסִיתִי בָךְ:כאתֹּם וָיֹשֶׁר יִצְּרוּנִי כִּי קִוִּיתִיךָ:כבפְּדֵה אֱלֹהִים אֶת יִשְׂרָאֵל מִכֹּל צָרוֹתָיו:
נקרא  2  פעמים
למעלה