JavaScript topic - Szoftverfejlesztés fórum

üzenetek

hozzászólások


lanszelot
(addikt)

Hello,
[link]
Ha letekerem a zöld box-ban lévő szöveget, hogyan tudok a tetejére vissza ugrani, ha egy sima szövegre klikkelek.
Nem "a" tag, és nem gomb.

martonx: Ezt nem értem miért írod? Mindent megcsináltam amit rtatok. Meg is köszöntem. Meg is írtam, hogy hogyan tudom megoldani.
Mi rosszat írtam?

[ Szerkesztve ]


Gardaai
(senior tag)

Cseréld le a my2 functionodat erre:
function my2() {
document.getElementById('fffz').scrollTop = document.getElementById('jump').offsetTop - 250;
}
Így gondoltad?


lanszelot
(addikt)

Először is köszönöm szépen a választ.

Közben sikerült megoldani, csak nem tudtam meg ide megírni.
Több módon oldottam meg, mind benne van a linkelt kódban.
A legörgetés alatt van egy szöveg, és a box-on kívül 3 szöveg.

A te megoldásod hibás, 4ik boxon kívüli szövegnek raktam be, és my3 function-t hívja meg.
hibakód:
"Uncaught TypeError: Cannot read properties of null (reading 'offsetTop')"

Azért hagytam benne, hogy meg tudd nézni.


Gardaai
(senior tag)

Persze, hogy hibás, mert kivetted a kódból azt az elemet ahova ugrani szerettél volna. :)
Ha már egy módosított kódba illeszted be az első verziódra készített kódot, nagy eséllyel nem fog működni.
Nyilván tesztelés nélkül nem írok ide egy kódot, hogy nézd meg Te magad jó lett-e.

Volt egy <span id='jump'></span> elemed a fffz ID diveden belül, legfelül és erre írtad a kódodat is, hogy oda ugorjon ami nem működött. Ebből kiindulva lett megírva a kódom.
Ha csak a tetejére szeretnél ugorni, nem pedig egy adott elemhez a szövegen belül akárhova, akkor document.getElementById('jump').offsetTop - 250 helyett csak írj egy nullát, tehát: document.getElementById('fffz').scrollTop = 0;

[ Szerkesztve ]


lanszelot
(addikt)

Elnézést. Nem vettem észre a telefonom csinálta. :R
Nem vettem ki, telefonról csináltam és folyamatosan frissíti az oldalt, és sokszor képtelenség beírni egy szót is.

Mivel beillesztést csináltam, igy össze vissza jelolgetett, és próbáltam gyorsabb lenni mint a frissítés.
Valószínű ekkor véletlen töröltem.
Nem vettem észre.
Borzasztó idegesítő így használni. A telefonos progikkal is ugyanez a gond.
Ha billentyűt csatolok akkor nem csinálja, csak amikor a telefon billentyűzetet használom.

Vissza írtam a sort és így tökéletesen működik. :)
Köszönöm szépen.


cigam
(félisten)
Blog

Egy node.js programot indítanék a géppel együtt szervízként. Eddig ment is, de most már annyira "fejlett", hogy meg kell adni pár paramétert iduláskor (IP címet, portszámot).
Terminálból indítva a könyvtárából szépen elindul (npm start 192.168.1.211), végzi a dolgát. Viszont szervízként már nem akaródzik neki.

[Unit]
Description=bmd_hyperdeck
[Service]
Type=simple
Restart=always
User=pi
Group=pi
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/home/pi/bmd_hyperdeck_time_remaining
ExecStart=/usr/bin/npm start 192.168.1.211
[Install]
WantedBy=multi-user.target

Ha nem adok meg IP címet, szépen elindul, de nem igazán végzi a dolgát, mert nem tudja hova kell csatlakozni. Ha beírom az IP címet, akkor meg nem indul el, mert csak:
febr 13 18:12:46 pi systemd[1]: Started bmd_hyperdeck.
febr 13 18:12:50 pi npm[9004]: > bmd-hyperdeck-web-time-remaining@1.0.0 start
febr 13 18:12:50 pi npm[9004]: > node server.js "192.168.1.211"
febr 13 18:12:52 pi npm[9378]: file:///home/pi/bmd_hyperdeck_time_remaining/node_modules/open/index.js:93
febr 13 18:12:52 pi npm[9378]: let {name: app, arguments: appArguments = []} = options.app ?? {};
febr 13 18:12:52 pi npm[9378]: ^
febr 13 18:12:52 pi npm[9378]: SyntaxError: Unexpected token '?'
febr 13 18:12:52 pi npm[9378]: at Loader.moduleStrategy (internal/modules/esm/translators.js:133:18)
febr 13 18:12:52 pi npm[9004]: npm ERR! code 1
febr 13 18:12:52 pi npm[9004]: npm ERR! path /home/pi/bmd_hyperdeck_time_remaining
febr 13 18:12:52 pi npm[9004]: npm ERR! command failed
febr 13 18:12:52 pi npm[9004]: npm ERR! command sh -c node server.js "192.168.1.211"
febr 13 18:12:52 pi npm[9004]: npm ERR! A complete log of this run can be found in:
febr 13 18:12:52 pi npm[9004]: npm ERR! /home/pi/.npm/_logs/2024-02-13T17_12_52_635Z-debug.log
febr 13 18:12:52 pi systemd[1]: bmd_hyperdeck.service: Main process exited, code=exited, status=1/FAILURE
febr 13 18:12:52 pi systemd[1]: bmd_hyperdeck.service: Failed with result 'exit-code'.
febr 13 18:12:52 pi systemd[1]: bmd_hyperdeck.service: Consumed 6.825s CPU time.
febr 13 18:12:52 pi systemd[1]: bmd_hyperdeck.service: Scheduled restart job, restart counter is at 598.
febr 13 18:12:52 pi systemd[1]: Stopped bmd_hyperdeck.
febr 13 18:12:52 pi systemd[1]: bmd_hyperdeck.service: Consumed 6.825s CPU time.
febr 13 18:12:52 pi systemd[1]: Started bmd_hyperdeck.
febr 13 18:12:57 pi npm[9550]: > bmd-hyperdeck-web-time-remaining@1.0.0 start
febr 13 18:12:57 pi npm[9550]: > node server.js "192.168.1.211"
...
Van ötlet, megoldás, tipp? Merthogy terminálban simán fut:
node server.js "192.168.1.211"
Connecting into Hyperdeck at: 192.168.1.211
Browser page ready: http://localhost:9088
[18:29:34] A new browser has connected from ::ffff:192.168.1.204


cigam
(félisten)
Blog

Sajna nem. Se idézőjellel, se nélküle:
SyntaxError: Unexpected token '?'


Carasc0
(őstag)

Sziasztok!

Adott JS generátor, mely 1-től 500-ig generál számokat. Ehhez van egy HTML kódom, amin egy gomb van. Arra kattintva kiválaszt egyet az 500 "különböző"számból, és kiírja a képernyőre:

Probléma: Ez tuti hogy nem 500 különböző számot generál, mert teszteltem. Kigenerálta a 12-t mondjuk hatodjára. Utána 91-edjére megint beadta a 12-t. Nekem az kellene, hogy amit már egyszer kiírt a képernyőre az legközelebb akkor jelenjen meg, ha már egyszer mind az 500 szám 1x a képernyőre került addig ne. Ehhez kellene egy S.O.S help! :R

[ Szerkesztve ]


Carasc0
(őstag)

Huh sajnos ezt is úgy kaptam ezt a kódot, én kuka vagyok ehhez. Gondolom valami módosítás kell csak. Magamtól tuti nem tudnék neki esni :(


cigam
(félisten)
Blog

Elméletileg nem, én gépeltem be az ip címet. Köszi a tippet!
Maj megpróbálom eldugni máshova. (rc.local, .bashrc,...)

[ Szerkesztve ]


cigam
(félisten)
Blog

Tudom a kódban már egyszer belefutottam, és plusz parancs kellett kiszűréshez, de itt most tényleg nem volt copy/paste. Ha a startig kitörlöm, elindul rendben, csak ugye IP cím hijján nincs mit csinálnia, leáll, de mivel szervíz-ként van bejegyezve, a systemd újraindítja, és kész a végtelen történet. Plusz mielött fix, a kódba épített IP címmet használt, paraméterek nélkül simán beröffent, miután meglettek adva a környezeti változói (Environment=PATH=/usr/bin:/usr/local/bin, Environment=NODE_ENV=production)
Már az is nagy lépés számomra, hogy npm start-al képes vagyok szervízként indítani. Ha a többi autostart megoldással is felsülök, kénytelen leszek visszalépni egyet, és fixen a kódba beleírni az IP címet.


Carasc0
(őstag)

const selectedNumbers = new Set();
function generateUniqueRandomNumbers(min, max, count) {
    const uniqueNumbers = new Set();
    while (uniqueNumbers.size < count) {
        const randomNumber = Math.floor(Math.random() * (max - min + 1)) + min;
        uniqueNumbers.add(randomNumber);
    }
    return Array.from(uniqueNumbers);
}
function showRandomNumber() {
    const uniqueRandomNumbers = generateUniqueRandomNumbers(1, 500, 500);
    const randomNumber = uniqueRandomNumbers[0]; // Csak az első számot jelenítjük meg
    document.getElementById("randomNumberDisplay").textContent = `${randomNumber}`;
}
function selectNumber() {
    const displayedNumber = parseInt(document.getElementById("randomNumberDisplay").textContent);
    selectedNumbers.add(displayedNumber);
    showRandomNumber();
}
// HTML gomb kattintás esemény kezelése
document.getElementById("selectButton").addEventListener("click", selectNumber);


Carasc0
(őstag)

Igazából péntekre kéne!

Tulajdonképpen iskolai feladat. Tombolasorsolára kell egy generátor ami gombnyomásra kiír egy számot. Működik is, csak az lenne a lényeg, amit már egyszer kiírt a képernyőre azt többet ne ismételje meg. :)


cattus
(őstag)

Minden egyes gomb kattintáskor újragenerálod a uniqueNumbers-et, a selectedNumbers-t viszont nem.

Tombolánál szerintem úgy kéne működnie, hogy egyszer legenerálod a random tömbödet az elején, majd utána csak kiveszel belőle számokat (és opcionálisan átrakod egy másikba).


Pala
(veterán)

Parancsolj: [link]
Amint felhasznaltad az osszes szamot, reseteli magat es ujrakezdi, amugy meg akarmikor resetelheted manualisan is.

[ Szerkesztve ]


cigam
(félisten)
Blog

Köszi!
Közben jobban megvizsgálva a kódot, egy csomó helyen nincs ; a parancs végén.
Nem lehet, hogy ezeknek a lezáró karaktereknek a hiánya okozza, hogy másképpen értelmezi, mint ahogy szeretném?


A_ScHuLcZ
(addikt)

Sziasztok,

Remélem jó topicba írok. :)
IT területen dolgozom, de nem kódolás vagy fejlesztés, ezek távol állnak tőlem. Egy szolgáltatást szeretnék beüzemelni, aminek a működéséhez webszervert kell használni, ehhez pedig a gyártótól le kell tölteni egy előre elkészített, testreszabható weboldalt. A problémám az, hogy már az alap weboldal sem működik tökéletesen, és a kipofozás előtt ezt szeretném megoldani.
Egy végtelenül egyszerű oldalról van szó, a html body-ban definiálva van egy form, ami tartalmaz egy hosszú szöveges részt, alatta pedig egy szöveges beviteli mezőt, és egy button-t. A szöveges mező email címet vár, és javascripttel vizsgálja, hogy tényleg emailt írt-e be a user. A gomb akkor használható, ha a beírt cím valóban egy email cím, és kattintásra a submitAction() metódust hívja meg. Ez a rész működik, ezzel nincs gond.
A probléma akkor jelentkezik, amikor a user mobil eszközről (pl. telefon vagy tablet) nyitja meg az oldalt, rábök a beviteli mezőre, felugrik az on-screen keyboard, és a cím beírását követően nem kikattint a mezőből és a weboldalon elhelyezett gombot használja, hanem a billentyűzeten látható Enter/Go/Next/akármilyen gombra kattint. Ekkor nem az elvárt működés tapasztalható, és ez gondolom arra vezethető vissza, hogy ez az eset nincs lekezelve az oldalon. Ezt szeretném megoldani, az lenne az elvárt működés, hogy a billentyűzeten megjelenő Enter/Go/Next billentyű használatakor ugyanaz a submitAction() metódus hívódjon meg, mint ami a button onclick eseményénél van beállítva.

A kódban a js részben 2 function van definiálva, submitAction() a gomb kattintáshoz és loadAction() a form betöltéséhez. Google alapján arra jutottam, hogy talán eseménykezelést kellene csinálnom a form-on létrehajtott submit eseményre, de lehet, hogy teljesen rossz úton járok.

Tudtok segíteni nekem, hogy hogyan tudnám ezt megoldani, vagy merre induljak el?

Köszönöm!


sztanozs
(veterán)
Blog

Latatlanban annyi otletem van, hogy van a mezokre valami esemenykezelo, aminek nem kellene lennie, vagy a form esemenykezeloje nincs jol beallitva.


cigam
(félisten)
Blog

Köszi! Így jár az ember, ha "csapong" a nyelvek között...
Viszont sikerült a műtét, és a beteg is túlélte. Dobtam a systemd szervíz megoldását, és készítettem egy kis bash scriptet, ami elindítja a node.js programot felparaméterezve:
#/bin/bash
cd /home/magic/bmd_hyperdeck_time_remaining
npm start 192.168.1.211

Ezt pedig betettem az /etc/xdg/lxsession/LXDE-pi/autostart fájlba:

@/home/magic/bmdtimer.sh

Így (újra)indításkor szépen automatikusan elindul ez is.


A_ScHuLcZ
(addikt)

Ide felmásoltam az alap fájlt, a gyártótól ezt lehetett letölteni, ezt kezdtem el továbbfejleszteni. De az említett funkció már ebben sem működik, erre keresek megoldást.

Rá tudsz pislogni kérlek, hogy esetleg látsz-e benne olyan hibát, ami ezt a jelenséget okozhatja?

Köszönöm! :R


nevemfel
(senior tag)

Ránézve a kódra, én is ezt tenném, amit írtál:

Google alapján arra jutottam, hogy talán eseménykezelést kellene csinálnom a form-on létrehajtott submit eseményre, de lehet, hogy teljesen rossz úton járok.

A submit feliratú button type-ját buttonról submit-ra módosítanám, és levenném az onclick eseménykezelőt erről a gombról. A submitAction függvényt a form elem onsubmit eseményéből hívnám meg: <form method="post" onsubmit="return submitAction()">.

A submitAction functiont is módosítani kell. Ha mehet a submit, akkor a submitAction true értékkel térjen vissza, ha nem, akkor false-al, tehát ezt: document.forms[0].submit(); , erre kell cserélni: return true;

Na most ez az elmélet, kipróbálni nem próbáltam ki. Ami látszik a forráskódból, hogy ez egy nagyon régi script lehet, és én semmiféle validációt nem látok a submitAction-ben, így ez elvileg mindig végrehajtja a form submitet, bármi is van az email mezőben. Az sem világos, hogy a loadAction és a submitAction miért állítgatja a form action-jét, méghozzá ha jól látom, ugyanarra az értékre.


Bzozoo
(tag)
Blog

Használj event key figyelést


A_ScHuLcZ
(addikt)

Köszönöm a javaslatot, bevált, a javasolt átalakítás után már jól működik. :R

üzenetek