NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze – Lekce 21 - Dokončení editoru tabulek v JavaScriptu

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
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č?

 
Odpovědět
11.6.2018 14:56
Avatar
Odpovídá 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]);
}
}

 
Odpovědět
20.1.2019 19:07
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)

Editováno 27.6.2019 13:23
 
Odpovědět
27.6.2019 13:22
Avatar
Markmann
Člen
Avatar
Odpovídá na Markmann
Markmann:27.6.2019 14:08

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

 
Odpovědět
27.6.2019 14:08
Avatar
Markmann
Člen
Avatar
Odpovídá 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é?

Editováno 27.6.2019 14:44
 
Odpovědět
27.6.2019 14:41
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.

 
Odpovědět
27.6.2019 14:48
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

 
Odpovědět
29.7.2019 17:16
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

 
Odpovědět
23.10.2019 16:05
Avatar
Odpovídá 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.

 
Odpovědět
23.10.2019 17:29
Avatar
Jan Šándor
Člen
Avatar
Odpovídá 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().

Odpovědět
27.1.2020 20:21
Jednoho dne přidám, až objevím to pravé.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 154.