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
Michal
Člen
Avatar
Michal:18.4.2016 9:43

Po kliknutí na button "Pridaj riadok hore" mi vypise chybu :
Uncaught TypeError: Array.prototy­pe.indexOf called on null or undefined
Prikladám aj zdroják.

Avatar
Odpovedá na Michal
Libor Šimo (libcosenior):18.4.2016 15:05

Toto som si upravil podľa stiahnutého vzoru:

function vytvorRiadok() {
         var novyRiadok = document.createElement("tr");
         var prvyRiadok = tabulka.firstElementChild;
             var bunkyPrvehoRiadku = prvyRiadok.childNodes;
             var pocetBuniekVPrvomRiadku = bunkyPrvehoRiadku.length;

         for (var i = 0; i < pocetBuniekVPrvomRiadku; i++) {
             novyRiadok.appendChild(vytvorBunku());
         }

         return novyRiadok;
}

V článku je to inakšie a aj ty to máš inakšie.
Možno je chyba tam.

Odpovedať
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovedať
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Nezmar Hydra
Člen
Avatar
Nezmar Hydra:6.10.2016 2:50

Jak můžu v javě sloučit buňky tabulky?
Jejich oindexování jsem vyřešil taklenc:

var td = document.crea­teElement("td")
var tdInput = document.crea­teElement("tex­t")
var oindexuj = document.crea­teElement("ID")
x = x+1;
oindexuj.id=("tab"+x­);
tdInput.textContent = x;
td.appendChil­d(oindexuj).ap­pendChild(tdIn­put);
return td;

ale jak mu říct, aby sloučil buňky s vybranými indexy na to jsem nepřišel.
Díky za radu.

Avatar
Odpovedá na Nezmar Hydra
Michal Žůrek - misaz:8.10.2016 0:12

hmmm, takhle to nepůjde chtělo by si to prustudovat základy HTML. Tvůj kód vytváří vpodstatě následující HTML.

<td>
    <ID id="tabX">
        <text>
        X
        </text>
    </ID>
</td>

a takhle tabulky v HTML nefungují.

Avatar
Nezmar Hydra
Člen
Avatar
Odpovedá na Michal Žůrek - misaz
Nezmar Hydra:8.10.2016 1:28

Ne to mi funguje fajn. mam oIDéčkovanou každou buňku a mužu si do ní přidávat co chci a kam chci. jen ten kód jsem nedal celej.
je to taklenc
function vytvorVychozi­Tabulku(vycho­ziVelikostX,vycho­ziVelikostY,I­DeckoKam,IDec­koPridel){
var tabulka;
var NUMindex = 0;
tabulka = document.crea­teElement("ta­ble");
document.getE­lementById(IDec­koKam).appendChil­d(tabulka);
for (var y = 0; y < vychoziVelikostY; y++)
{

var tr = document.crea­teElement("tr");
tabulka.appen­dChild(tr);
for (var x = 0; x < vychoziVelikostX; x++) {
NUMindex = NUMindex+1;
tr.appendChil­d(vytvorBunku(I­DeckoPridel,NU­Mindex));
}
}
}
function vytvorBunku(Tex­tIndes,index) {
var td = document.crea­teElement("td");
var tdInput = document.crea­teElement("tex­t");
var oindexuj = document.crea­teElement("ID");

oindexuj.id=(Tex­tIndes+index);
tdInput.textContent = (TextIndes+index);
td.appendChil­d(oindexuj).ap­pendChild(tdIn­put);
return td;
}

Avatar
Odpovedá na Nezmar Hydra
Michal Žůrek - misaz:8.10.2016 11:37

Buňky se dají spojit tak, že první buňce dáš attribute colspan nebo rowspan s hodnotou kolik sloupců/řádků to má sloučit.

Avatar
Jan Zamecnik
Člen
Avatar
Jan Zamecnik:26.10.2016 10:15

Funkce pro zjištění aktivní buňky jsem upravil následovně

function indexRadkuAktivniBunky() {
    if (aktivniBunka) {
        var cilHledani = tabulka.childNodes;
        var hledanyPrvek = aktivniBunka.parentElement.parentElement;
        return Array.prototype.indexOf.call(cilHledani, hledanyPrvek);
    } else
        return 0;
}

function indexSloupceAktivniBunky() {
    if (aktivniBunka) {
        var bunkyVRadku = aktivniBunka.parentElement.parentElement.childNodes;
        var td = aktivniBunka.parentElement
        return Array.prototype.indexOf.call(bunkyVRadku, td)
    } else
        return 0;
}

To proto, aby na začátku pokud není vybraná buňka použil index = 0

Editované
Avatar
Jan Zamecnik
Člen
Avatar
Jan Zamecnik:26.10.2016 10:44

Pro hraní piškvorek jsem přidal na začátek globální proměnou

var krizek = false;

a upravil funkci:

tdInput.onfocus = function () {
    aktivniBunka = this;
    if (krizek) {
        aktivniBunka.value = "X";
        krizek = false;
    } else {
        aktivniBunka.value = "O";
        krizek = true;
    }
};

Potom po kliknutí na buňku se přidá jednou křížek podruhé kolečko.

Avatar
koukalf
Člen
Avatar
koukalf:11.12.2016 22:46

Ahoj, super článek, rád bych se zeptal jak lze nahradit zápis aktivniBunka.pa­rentElement.pa­rent.Element nebo jenom aktivniBunka.pa­rentElement. Google chrome mi háže chybu index.js:158 Uncaught TypeError: Cannot read property 'parentElement' of undefined a já už vážně nevím co s tím.

Když jsem se pokusil o jiný zápis typu - tabulka.childNo­des, tak mi to vzal, ale tam je samozřejmě jiná funkčnost :)

Odpovedať
Kvalitní program je jako báseň, pokud do něj nevložíš um, tak se nedá číst.
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.