Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Taulukko piiloon sivulle

Sivun loppuun

mvi10 [26.01.2007 21:44:10]

#

Miten saisi sellaisen toiminnon tietokannasta html-tauluun noudetulle datalle (satunnainen määrä rivejä), kuin keskustelupalstoilla, eli expand/collapse + ja miinus-plus painikkeilla? Näin kannasta noudettu suuri määrä dataa olisi piilossa kunnes käyttäjä valitsee näyttää sen.

Merri [26.01.2007 23:09:12]

#

Tässä on nyt varsin pikainen kyhäelmä:

<html>
	<head>
		<title>Expand/collapse</title>
		<script type="text/javascript">
function expand(element) {
	var item = document.getElementById(element);
	if (item) {
		item.style.visibility = 'visible';
		item.style.position = 'static';
	}
}

function collapse(element) {
	var item = document.getElementById(element);
	if (item) {
		item.style.visibility = 'hidden';
		item.style.position = 'absolute';
	}
}
		</script>
	</head>
	<body onload="collapse('yksi')">
		<table style="border:1px solid black"><tr><th>
			<a href="" onclick="expand('yksi'); return false">Expand</a>
			<a href="" onclick="collapse('yksi'); return false">Collapse</a>
		</th></tr><tr id="yksi"><td>
			Row yksi here!
		</td></tr></table>
	</body>
</html>

(En itse pidä inlinejavascriptistä, mutta menköön nyt tämän esimerkin kanssa, jotta vain olennainen löytyy...)

mvi10 [28.01.2007 10:24:24]

#

Kokeilin tuota ja nyt kun while-loopilla haen kaikki hakuehtojen rivit niin tuolla piiloutuu vain ensimmäinen rivi...?

Antti Laaksonen [28.01.2007 11:40:13]

#

Oletko antanut joka riville oman id:n ja muuttanut bodyn onload-kohtaa niin, että se piilottaa kaikki rivit?

GoldenDragon [29.01.2007 19:21:48]

#

Ja jos haluaa käyttää yhtä ainutta nappia sekä piilotukseen (esim. kuvanappi), että näyttämiseen, niin voisi käyttää yhtä ainutta JS funktiota tuossa:

function popElem( elem ){
	var item = document.getElementById( elem );
	if( item.style.visibility != "hidden" ){
		item.style.visibility = "hidden";
		item.style.position = "absolute";
	}
	else{
		item.style.visibility = "visible";
		item.style.position = "static";
	}
}

lahtis [30.01.2007 03:22:43]

#

eikös ton voisi tehdä myös näin.

function ShowOrHide(d1, d2) {

	  if (d1 != '') DoDiv(d1);

	  if (d2 != '') DoDiv(d2);

	}


function DoDiv(id) {

	  var item = null;

	  if (document.getElementById) {

		item = document.getElementById(id);

	  } else if (document.all){

		item = document.all[id];

	  } else if (document.layers){

		item = document.layers[id];

	  }

	  if (!item) {

	  }

	  else if (item.style) {

		if (item.style.display == "none"){ item.style.display = ""; }

		else {item.style.display = "none"; }

	  }else{ item.visibility = "show"; }

 	}

mvi10 [30.01.2007 14:28:55]

#

Pikkuhiljaa menee meikän taitojen yli, mutta eiköhän se tästä. Mites tuo käytännössä sitten toteutetaan tuo joka riville oma id? Tajuan kyllä suurin piirtein miten se on tarkoitus tehdä, mutta koodaustaidot eivät riitä.

GoldenDragon [30.01.2007 14:48:26]

#

Ei sen pahempaa, kuin vain vaihdat noihin js-funktioiden kutsuihin sen elementin id:n, jonka haluat piilotettavan. Ja tietenkin sillä piilotettavalla rivillä tulisi olla id, jotta siihen pääsisi käsiksi. Funktion kutsulla tarkoitan napissa/linkissä olevaa onclick-määrettä.

Esimerkki:

<img src="images/nappi.gif" alt="Piilota/Näytä boksi" onclick="popElem('rivin_ID');" />

Sillä ei sitten enää ole merkitystä, sijoitatko tuon onclickin linkkiin vai johonkin kuvaan tai aivan mihin tahansa. Kunhan sijoitat sen siihen nappiin, josta tahdot rivin piilotettavan/näytettävän.

Merri [30.01.2007 19:02:39]

#

lahtis: on täysin turhaa tukea muuta kuin getElementById:tä: jokainen JavaScriptiä tukeva selain, joka on julkaistu vuoden 1998 jälkeen, tukee sitä. document.all ja document.layers jääkööt oman onnensa nojaan.

lahtis [30.01.2007 20:26:58]

#

Hyvä tietää, että ton voi jotenkin paremmin tai uudella tavalla tehdä. Itse olen käyttänyt tota tapaa. Kun toi javascript on vähän tuntematon alue minulle, mutta kaikkea näköjään oppii tai ainakin huomaa että asian voi toisellakin tavalla tehdä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta