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

  • הוסף לסימניות
  • #21
הid באמצע הbody והסקריפט בא בסופו של הbody
אם זה מתבצע פעם אחת - הקוד עובד
מאמינה שאם תוריד את השאלה על המשתנה mouseDown - הקוד יקרה 10 פעמים בדיוק
לא הבנתי למה לחלק לפולסים בודדים, שירד ישירות את המקסימום או שירד בכך לחיצה כמה בודדים
בשביל שירד עם הפסקות כדאי להתשמש בפונקציות של טיימר ולא בלולאות
 
  • הוסף לסימניות
  • #22
אם זה מתבצע פעם אחת - הקוד עובד
מאמינה שאם תוריד את השאלה על המשתנה mouseDown - הקוד יקרה 10 פעמים בדיוק
לא הבנתי למה לחלק לפולסים בודדים, שירד ישירות את המקסימום או שירד בכך לחיצה כמה בודדים
בשביל שירד עם הפסקות כדאי להתשמש בפונקציות של טיימר ולא בלולאות
ברו שאם הייתי רוצה שהחלון יגלל 1000 פיקסלים הייתי נותן אותו ביחידה אחת אבל אני מעוניין בכפתור שיגלול את החלון מטה (וכפתור אחר מעלה) לפי הלחיצה עליו - כל עוד המשתמש לוחץ החלון יגלל (ביחידות קטנות כמובן כמו 10/20 פיקסלים) כשירים המשתמש אצבעו החלון יעמוד.
בקיצור אני מנסה לתת תחליף ל scroll Bar הרגיל של הדפדפן.
 
  • הוסף לסימניות
  • #23
אוקי, הבנתי
הקוד הבא אמור לעבוד בדיוק כמו שאתה רוצה (הפסקות של חצי שניה בין גלילה לגלילה, אפשר לשנות את הערך - במקום 500 - מה שנראה לך טוב)
גילוי נאות - כתבתי את הקוד בלי להריץ אותו - אם הוא לא עובד - אבדוק לעומק
קוד:
var mouseDown;

document.getElementById("down").onmouseup = function() {
clearInterval(mouseDown);
}
document.getElementById("down").onmousedown =
function(){
doMouseDown()
mouseDown = setInterval(doMouseDown(); }, 500);
}
var doMouseDown = function(){
window.scrollBy({top: 10, left: 0, behavior: 'smooth' });
}
 
  • הוסף לסימניות
  • #24
אוקי, הבנתי
הקוד הבא אמור לעבוד בדיוק כמו שאתה רוצה (הפסקות של חצי שניה בין גלילה לגלילה, אפשר לשנות את הערך - במקום 500 - מה שנראה לך טוב)
גילוי נאות - כתבתי את הקוד בלי להריץ אותו - אם הוא לא עובד - אבדוק לעומק
אז ככה, ראשית תודה אנו מתקדמים לתוצאה...
הקוד שכתב קצת מבוגבאג... תיקנתי אות כך (וכמובן בדקתי שזה עובד):
This user does not have permission to use the HTML BB code.

רק בעיה קטנה נותרה וצריך שתעזרו לי איך לפתור אותה.
ברגע שהעליית העכבר לא נעשה על האלמנט החלון ימשיך לרוץ עד הסוף, הסיבה פשוטה, על מנת לעצור את הטיימר יש לבצע את עליית העכבר על האלמנט (מה שחייב אותי להשתמש בcss ע"מ שהאלמנט יהיה Sticky).

איך מגדירים לו שהטיימר יעצר בכל עליה לא משנה איפה על המסך גם מחוץ לדפדפן (זה חשוב גם במקרה שהעכבר החליק לי מהאלמנט לאחר הלחיצה).
 
  • הוסף לסימניות
  • #25
מחליפים
document.getElementById("down").onmouseup
ב:
document.getElementByTagName("body").onmouseup
בהצלחה!
 
  • הוסף לסימניות
  • #26
מחליפים
document.getElementById("down").onmouseup
ב:
document.getElementByTagName("body").onmouseup
בהצלחה!
כל עוד המשתמש ירים את העכבר על איזור ריק במסך מה טוב, הבעיה שהוא יכול להרים את העכבר על אלמנט על יד הdown במקרה כזה הטיימר לא יפסיק.

איך מגדירים הרמת עכבר לא משנה איפה (בהתייחסות לעכבר בלבד) האם יש כזו אפשרות?
 
  • הוסף לסימניות
  • #28
אכן זה עובד מדהים, מוזמנים לבדוק כאן
הבעיה היחידה כרגע שאם העכבר הורם תוך כדי תזוזה הוא לא קולט את זה, כלומר הקוד לא מתאים לעכבר שהורם תוך כדי תזוזה - ככה מתוך הנסיון (תבדקו את זה בקישור).

מי ידע למצוא את הקוד הנכון?
 
  • הוסף לסימניות
  • #29
אולי במקום window תנסו document או document.body
 
  • הוסף לסימניות
  • #30
אולי במקום window תנסו document או document.body

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

ועכשיו שני פרטים שנותרו לי לברר:
1. איך גורמים לאייקון להיות בלתי נגרר?

2. למה כשקורה כזה מקרה לחיצה סתם על המסך וכמובן גם הרמת העכבר לא עוצרת את הגלילה, הרי נעשה כאן mouseup?

*כמו למשל המצב שלי שאני לחצתי על אייקון מסויים (הוא #down) ולאחר מכן אני גרור מעט עם העכבר, בעצם הוא גורר את האייקון ולכל מקום במסך יש אין כניסה - כלומר, אי אפשר לגרור אותו לשם.

עזרתכם בבקשה....
 
  • הוסף לסימניות
  • #31
@ש.ב.ח.
אני לא ליד מחשב, אבל כמדומני שאם האלמנט down# יהיה button זה יעבוד לך
 
  • הוסף לסימניות
  • #32
מקפיצה,

s976, mordy, ש.ב.ח., UU

מישהו יכול להגיד לי מה לא טוב בקוד (או אם צריך להוסיף משהו):
מה שיוצא לי:
 

קבצים מצורפים

  • index.html
    497 ביטים · צפיות: 4
  • image.png
    image.png
    KB 197.8 · צפיות: 9
  • הוסף לסימניות
  • #33
  • הוסף לסימניות
  • #34

קבצים מצורפים

  • image (1).png
    image (1).png
    KB 156.7 · צפיות: 7
נערך לאחרונה ב:
  • הוסף לסימניות
  • #35
נערך לאחרונה ב:
  • הוסף לסימניות
  • #36
הקוד עצמו עובד מצוין אבל בגלל שהאלמנטים ב-HTML לא מכילים תוכן ולא הוגדר להם height ו-width הם אינם מופיעים בתצוגה
בפעם הבאה שאתם מבקשים עזרה כדאי שתצרפו את הקוד כטקסט חי ולא כתמונה
JavaScript:
(function(){
    for (let i = 0; i < 8; i++) {
        let row = document.createElement('div')
        row.classList.add('row')
        for (let j = 0; j < 8; j++) {
            let square = document.createElement('div')
            square.classList.add('square')
            row.appendChild(square)
            square.style.backgroundColor = color(i, j)
            if(i != 3 && i != 4)
                if(square.style.backgroundColor.value == "black") {
                    let hole = document.createElement('div')
                    hole.classList.add('hole')
                    if(i < 3)
                        hole.style.backgroundColor = "black"
                    else hole.style.backgroundColor = "white"
                    square.appendChild(hole)
                }
        }
        document.querySelector('#board').appendChild(row)
       
    }
})()

function color(i, j) {
    if(i % 2 == 0)
        if(j % 2 == 0)
            return "white";
        else return "black";
    else if (j % 2 != 0)
        return "white";
    return "black";
}
 
  • הוסף לסימניות
  • #37
הקוד עצמו עובד מצוין אבל בגלל שהאלמנטים ב-HTML לא מכילים תוכן ולא הוגדר להם height ו-width הם אינם מופיעים בתצוגה
בפעם הבאה שאתם מבקשים עזרה כדאי שתצרפו את הקוד כטקסט חי ולא כתמונה
JavaScript:
(function(){
    for (let i = 0; i < 8; i++) {
        let row = document.createElement('div')
        row.classList.add('row')
        for (let j = 0; j < 8; j++) {
            let square = document.createElement('div')
            square.classList.add('square')
            row.appendChild(square)
            square.style.backgroundColor = color(i, j)
            if(i != 3 && i != 4)
                if(square.style.backgroundColor.value == "black") {
                    let hole = document.createElement('div')
                    hole.classList.add('hole')
                    if(i < 3)
                        hole.style.backgroundColor = "black"
                    else hole.style.backgroundColor = "white"
                    square.appendChild(hole)
                }
        }
        document.querySelector('#board').appendChild(row)
  
    }
})()

function color(i, j) {
    if(i % 2 == 0)
        if(j % 2 == 0)
            return "white";
        else return "black";
    else if (j % 2 != 0)
        return "white";
    return "black";
}

אלעזר 1 יש להם רוחב וגובה, זה בcss:​

קוד:
*{
    box-sizing: border-box;
    background-color: black;
}

#game{
    width: 700px;
    margin: auto;
}

#board{
    width: 640px;
    border: 15px white solid;
    border-radius: 10px;
}

#board > .row{
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: space-evenly;
    height: 86px;
}

.square{
    width: 88px;
    height: 88px;
}

.hole{
    width: 80px;
    height: 80px;
    border-radius: 50%;
    border: 3px white solid;
}
תודה על העזרה!!
נ.ב. לדעתי הריבועים מסתירים את העיגולים שיצרתי, איך אפשר להביא צורה קדימה על צורה נוספת??
 
נערך לאחרונה ב:
  • הוסף לסימניות
  • #38
יתכן שיש לכם הגדרות CSS אחרות שדורסות את הערכים האלו.
זו התוצאה אצלי לפי הקובץ המצורף:
1660146551459.png
 

קבצים מצורפים

  • index (3).html
    KB 2.1 · צפיות: 2
  • הוסף לסימניות
  • #39
כמו מה? כי השתדלתי לעשות הכל בcss ולא יותר מידי בjs.
 
  • הוסף לסימניות
  • #40
יתכן שיש לכם הגדרות CSS אחרות שדורסות את הערכים האלו.
זו התוצאה אצלי לפי הקובץ המצורף:
צפה בקובץ המצורף 1187054
@אלעזר 1 ניסיתי ליצור את העיגולים בדף נפרד עם אותו סטייל, בלי הריבועים עצמם וכן יצא לי.
אז חשבתי אולי צריך להביא לעיגול משהו שיביא אותו לפני הריבוע, יש משהו כזה?
 

פרוגבוט

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

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

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

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

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


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

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

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

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

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



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

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

Success

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

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

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

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

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

לוח מודעות

הפרק היומי

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


תהילים פרק כה

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