Razeni sloupcu v tabulce – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Razeni sloupcu v tabulce – JavaScript, AJAX, jQuery – Fórum – Programujte.comRazeni sloupcu v tabulce – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
sorter
~ Anonymní uživatel
3 příspěvky
22. 3. 2016   #1
-
0
-

 Ahoj, muzete zkontrolovat moji implementaci razeni sloupcu v tabulce? Je to spravne implementovany bubble sort?

Vim ze tam chybi detekce typu sloupce, o tu mi ted nejde

        var table = document.getElementById('id_tbody_tabulky');

        for(q=0;q<table.rows.length-1;q++){
            var swp = table.rows[q].innerHTML
            if(table.rows[q].cells[this.cellIndex].innerHTML < table.rows[q+1].cells[this.cellIndex].innerHTML) {
                table.rows[q].innerHTML = table.rows[q+1].innerHTML;
                table.rows[q+1].innerHTML = swp;
                q=-1;}
        }
Nahlásit jako SPAM
IP: 94.242.246.–
Reklama
Reklama
peter
~ Anonymní uživatel
2528 příspěvků
23. 3. 2016   #2
-
0
-

Nebylo by jednodussi pretahnout data do JS array, seradit to pres js sort a vypsat tabulku? Mam zkusenosti, ze starsi prohlizece neumi spravne pracovat s js a tabulkou. Ale od te doby jsem to moc nezkousel.

Pokud mas pocit, ze to mas ok, tak, proc to neotestujes?

Nas ucili, ze bubble-sort vypada trochu jinak. Nicmene, tohle by taky mohlo fungovat. Jestli to spravne chapu, tak, pokazde, kdyz provede prehozeni radku, tak zacne od zacatku. Coz je teda casove narocne (protoze treba od zacatku muze mit prvnich 10 radku serazenych a stejne je bude znova a znova prochazet). Plus se k tomu pripocita prace s tabulkou, kterou IE nezvlada zrovna rychle. Mozna by se dalo pracovat spis s pomocnym polem, kde mas cisla radku a ty cisla radku prehazovat. Tabulku pak poprehazovat az po skonceni cyklu serazovani.

Hele, jestli to nemate pevne dane, muzes pouzit serazovani skupin. Porovnas 01, 23, 45.. v dalsim kroku pak 0123, 4567 ...

Nahlásit jako SPAM
IP: 2001:718:2601:26c:11a3:d2...–
sorter
~ Anonymní uživatel
3 příspěvky
26. 3. 2016   #3
-
0
-

Diky za rady, funguje mi to. Je to ale jak pises - je to velmi pomale a neni to bubble sort.

Predelam to

Nahlásit jako SPAM
IP: 37.48.109.–
Sorter
~ Anonymní uživatel
3 příspěvky
4. 4. 2016   #4
-
0
-

Kdyby to nekoho zajimalo, tak nejpomalejsi na tom bylo to razeni primo v tabulce. Pri 60 polozkach to trvalo az 1.5 sekundy.


Kdyz jsem ty data z tabulky vlozil do pole uvnitr pole a radil je tam stejne jako v te tabulce, tak pri 60 polozkach to trvalo maximalne 60ms.

Oprava radiciho algoritmu na opravdovy quicksort  zadne viditelne zrychleni neprinesla, pravdepodobne malo polozek

Vzhledem k tomu, ze to razeni uz mam temer instantni, tak uz nehledam zpusoby jak to vice zoptimalizovat

Nahlásit jako SPAM
IP: 185.47.220.–
peter
~ Anonymní uživatel
2528 příspěvků
4. 4. 2016   #5
-
0
-

Tak potom to prohlizece zatim nevyresili :) Pri smazani radku se prepocitavaji rozmery bunek. Pri pridani opet. jestli se treba neroztahnou. Jeste bys mohl nastavit css tabulky na fixed. Mozna by to slo pak serazovat i tabulkove.
http://www.jakpsatweb.cz/…-layout.html

Nahlásit jako SPAM
IP: 2001:718:2601:26c:c9dd:86...–
peter
~ Anonymní uživatel
2528 příspěvků
4. 4. 2016   #6
-
0
-

Mimochodem, ja nemluvil o quicksortu, ale o modifikovanem insert sortu (slevani)
http://mlich.zam.slu.cz/x/sorting.htm
(na mem pc serazeni za 7ms, nativni 1ms)
Koukam, ze FF mezitim upgradoval serazovaci algoritmus, puvodne jsem mel slevani rychlejsi :)

Jen nechapu, jak jsi docilil 60ms. To je asi i se zobrazovanim nebo ctenim z tabulky.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:c9dd:86...–
4. 4. 2016   #7
-
0
-

Já bych na to použil nativní funkci pro třídění polí.

function sortTable(table,cell_index){  
  cell_index >>= 0;

  var rows = table.rows;
  var sorted_rows = [];
  var i, size = rows.length;
  var parent = rows[0].parentNode;
  
  for(i=0;i<size;i++){
    sorted_rows[i] = rows[i];
  }
  
  sorted_rows.sort(function(a,b){
    return b.cells[cell_index].innerHTML < a.cells[cell_index].innerHTML ? 1 : -1;
  });

  for(i=0;i<size;i++){
    parent.appendChild(sorted_rows[i]);
  } 
};

sortTable(document.getElementById('sorting-table'));
Nahlásit jako SPAM
IP: 85.13.68.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

Podobná vlákna

řazení sloupců matice — založil LEnka V

Řazení podle více sloupců — založil PetrCr

Komprese sloupcu — založil klaveska

Serazeni sloupcu v matici — založil Katka

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý