Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 21. diel - Dokončenie editora tabuliek v JavaScripte

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Tomáš Chocenský:11.6.2018 14:56

ahoj
můžete mi poradit jaký je rozdil mezi timto ...

function pridejSloupecDoleva() {
        let indexVybraneho = indexSloupceAktivniBunky();
        for (let i = 0; i < tabulka.childNodes.length; i++) {
                tabulka.childNodes[i].insertBefore(vytvorBunku(), tabulka.childNodes[i].childNodes[indexVybraneho]);
        }
}

a timto kodem ...

function pridejSloupecDoleva() {
    let bunka = vytvorBunku();
    let indexVybraneho = indexSloupceAktivniBunky();
    for (let i = 0; i < tabulka.childNodes.length; i++) {
        //pred vybranou bunku v kazdem z radku
        tabulka.childNodes[i].insertBefore(bunka, tabulka.childNodes[i].childNodes[indexVybraneho]);
    }
}

?
Jen jsem uložil funkci do proměnné (jak tomu bylo i v předchozích funkcích) a myslím že by to mělo fungovat pořád stejně.
Ale z mě nepochopitelných důvodů mi to začne přidávat ty sloupce(buňky) jen v posledním řádku.
Proč?

Avatar
Odpovedá na Tomáš Chocenský
Roman Havelka:20.1.2019 19:07

Vloz si "let bunka" do cyklu.

/**
* Prida sloupec vlevo od oznacene bunky
*/
function pridejSloupec­Doleva() {

let indexVybraneho = indexSloupceAk­tivniBunky();
for (let i = 0; i < tabulka.childNo­des.length; i++) {
let bunka = vytvorBunku();
tabulka.childNo­des[i].insertBe­fore(bunka, tabulka.childNo­des[i].childNo­des[indexVybra­neho]);
}
}

Avatar
Markmann
Člen
Avatar
Markmann:27.6.2019 13:22

Zdravím! Pomůžete, prosím?
Zatím jsem pracoval bez pomocí IDE, který by mi pomáhal hledat chyby. Teď jsem zkusil Visual Studio Code, ale ten říká, že nenašel žádnou chybu. Problém nastal, když jsem za:
vytvorTlacitko­AVlozHo("přidat řádek nahoru",documen­t.body) napsal .onclick=pridej­RadekNahoru;
Vypsaly se pouze první 2 buňky a tabulky zmizela.
Hledám, hledám, ale nevím si rady.
Rád bych poslal texťáky, ale jde jen jeden obrázek, zbytečně bych tady zabíral místo, věřte že jsem jen přidal .onclick=pridej­RadekNahoru;(nor­málně se nevypsalo nic, když tam byla chyba, ale teď se vypsali dva buttony)

Editované
Avatar
Markmann
Člen
Avatar
Odpovedá na Markmann
Markmann:27.6.2019 14:08

Chybu jsem našel, chyběla mi metoda vytvorRadek xD

Avatar
Markmann
Člen
Avatar
Odpovedá na Markmann
Markmann:27.6.2019 14:41

Tak ne, problém přetrvává. Teď jsem ale spustil nástroj pro vývojáře v chromu a aspoň to hází nějaké errory. Přikládám soubor, co mi to píše. Jsem zmaten. Proč navíc za pridejRadekNahoru nejsou závorky? Není to funkce, která není v proměnné?

Editované
Avatar
Markmann
Člen
Avatar
Markmann:27.6.2019 14:48

A proč, když spustím vzorový a kliknu na tlačítka přidej řádku, tak se nic nestane(nevidím rozšíření té tabulky)? V nástrojích pro vývojáře to hlásí chybu viz příloha.

Avatar
Jan Tesař
Člen
Avatar
Jan Tesař:29.7.2019 17:16

Ahoj, proč ve funkci vytvorTlacitko­AVlozHo(popisek, rodic) při jejím volání do "rodic" nelze napsat nic jiného než document.body, např. document.p nebo document.body.p (samozřejmě daný tag v indexu vytvořím), nebo, pokud to nelze proč daný parametr u funkce vůbec používáme a nenapíšem document.body přímo do funkce a v parametru necháme jen popisek?

Děkuji

Avatar
Jozef Lysík
Člen
Avatar
Jozef Lysík:23.10.2019 16:05

Čaute.
Príkazy tabulka.lastChild a tabulka.lastE­lementChild vracajú to isté? Napríklad v podmienkach kde sa testuje posledný riadok alebo stĺpec fungujú obidva zápisy.
Ďakujem

Avatar
Odpovedá na Jozef Lysík
Jakub Podskalský:23.10.2019 17:29

lastElementChild vrátí poslední element (elementem se myslí tag). lastElement vrátí poslední node, tím může být třeba text nebo komentář.

<div>
    <button>tlačítko</button>
    <p>paragraph</p>
    Já jsem text node
</div>

lastChild by vrátil ten poslední text node, lastElementChild p element.

Avatar
Jan Šándor
Člen
Avatar
Odpovedá na Tomáš Chocenský
Jan Šándor:27.1.2020 20:21

Ahoj, asi to už je jedno, ale je to tím, že se ti do proměnné bunka uloží výsledek aplikace funkce vytvorBunku(), která vrátí jednu jedinou novou konkrétní buňku a ty pak vlastně v cyklu všude přidáváš tu jednu konkrétní buňku do každého řádku.

Tedy snažíš se o to, aby jediná buňka byla vložena do více řádků současně. Proto ti to vyřeší přesun let bunka = vytvorBunku(); dovnitř do foru, protože tak v každé iteraci vytvoříš novou instanci buňky (zcela novou, další buňku), která se přidá. Každý řádek tedy dostane svoji novou buňku.

Tohle je opravdový důvod, proč ti to nešlo (a mě taky, když jsem to zkoušel dělat více způsoby/zápisy kódu a toto byl jeden z nich). To s tím přesunem do foru je sice řešení, ale není tam to vysvětlení proč se to chovalo jinak, než jsi čekal.

Pokud bys do bunka uložil funkci (takto: let bunka = vytvorBunku; tedy bez zavorek) a nikoliv výsledek její aplikace (kterou jsi inicioval právě těmi závorkami) a pak místo bunka použil bunka(), vše by fungovalo, jak jsi očekával. To ale nemá myslím moc smysl, když můžeš na místě aplikovat samu funkci vytvorBunku().

Odpovedať
Jednoho dne přidám, až objevím to pravé.
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 161.