Jump to content
php.lv forumi

Sort Tables


Sugarfree

Recommended Posts

Vai kāds var palīdzēt tikt galā ar problēmu?

Googlē sameklēju sev nepieciešamo Sort tables javascriptu, viss it kā ir kārtībā, bet ir vēl viena lieta. ;/

 

Gabals no javascript koda:

 

function alternate(table) {
// Take object table and get all it's tbodies.
var tableBodies = table.getElementsByTagName("tbody");
// Loop through these tbodies
for (var i = 0; i < tableBodies.length; i++) {
	// Take the tbody, and get all it's rows
	var tableRows = tableBodies[i].getElementsByTagName("tr");
	// Loop through these rows
	// Start at 1 because we want to leave the heading row untouched
	for (var j = 0; j < tableRows.length; j++) {
		// Check if j is even, and apply classes for both possible results
		if ( (j % 2) == 0  ) {
			if ( !(tableRows[j].className.indexOf('odd') == -1) ) {
				tableRows[j].className = tableRows[j].className.replace('odd', 'even');
			} else {
				if ( tableRows[j].className.indexOf('even') == -1 ) {
					tableRows[j].className += " even";
				}
			}
		} else {
			if ( !(tableRows[j].className.indexOf('even') == -1) ) {
				tableRows[j].className = tableRows[j].className.replace('even', 'odd');
			} else {
				if ( tableRows[j].className.indexOf('odd') == -1 ) {
					tableRows[j].className += " odd";
				}

 

CSS:

 

table.sortable tr.odd td {
background-color: #EDEBEF;
}

table.sortable tr.even td {
background-color: #fff;
}

 

Līdz ar to es varu iekrāsot tabulas satura rindas divās krāsās... Jautājums sekojošs - kā var izdarīt tā, lai man iekš CSS būtu pieejamas 4 tr klases? Tas man ir vajadzīgs, lai varētu katram tr piešķirt kādu konkrētu krāsu. Bez tam, vai ir iespējams šīs te krāsas "nofiksēt vajadzīgā vietā"? Nu, piemēram, zaļā krāsā vienmēr iekrāsosies pirmās četras rindas, zilā - nākošās divas utt... es ceru, ka doma ir skaidrs ;/

Link to comment
Share on other sites

Javascriptam japieliek papildus funkcionalitāte/checkings ka "zaļā krāsā vienmēr iekrāsosies pirmās četras rindas, zilā - nākošās divas" šim tr tiek pieškirta cita klase..

Teiksim tavā gadijumā tā tīri teorētiski:

 

if(j<4) { tableRows[j].className += " zaljaaklase"; }

else if(j>3 && j < 6) { tableRows[j].className += " zilaaklase"; }

 

Šādi IFu kombinācija protams ir diezgan nejēdzīgi sarakstīti, bet nu ideja skaidra tev ir 'j' mainīgais kas satur rindas numuru un pēc tā krāso kādu nu vien vēlies..

 

+= vietā var lietot vienkārši = .. jo += apendo klasi taču tev abas klases overraido viena otru..

 

 

p.s. ja šis skripts tiek darbināts vienreiz tad vēl nekas, bet vispār krietni ātrāk ir mainīt tikai background atribūtu ( tableRows[j].style.backgroundColor = 'blue' ) ... Mainīt klasi ir diezgan lēni un dažos brīžos uz dažiem pārlūkiem iestājas diezgan liels lags (it īpaši var novērot ja pataisa onMouseOver eventus)

Link to comment
Share on other sites

×
×
  • Create New...