Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: HTML, JavaScript: Taulokon tekeminen linkiksi

Sivun loppuun

shovi [30.05.2003 15:39:51]

#

Saako taulukosta linkkiä html:ssä? Kun tarkoituksena olisi muuttaa javascriptillä taulukon taustaväriä sillon kun hiiri on sen päällä ja tehdä siitä linkki. Onnistuuko?

NiKC [30.05.2003 16:01:16]

#

yritä käyttää noita javascript-eventtejä.

<table onMouseOver="vaihdaTaustavari(this,0)" onMouseOut="vaihdaTaustavari(this,1)">

edit:
tää *saattaa* toimia... täysin testaamatonta mutua (taas kerran)

stylet = new Array( "highlight", "plain" );
function vaihdaTaustavari(el, ind) {
   el.className = stylet[ind];
}

ja sitten pitää tietty olla vastaavat css-määritykset noille highlighted ja plain sanoille tyyliin

<style type="text/css">
  .highlight { background-color: yellow; }
  .plain { background-color: white; }
</style>

NiKC [30.05.2003 16:17:11]

#

Testattu toimivaksi... (kerrankin)

<html>
<head>
	<style type="text/css">
		.highlight { background-color: yellow; }
		.plain { background-color: white; }
	</style>

	<script language="JavaScript">
		stylet = new Array( "highlight", "plain" );
		function chbg(el, ind) {
			el.className = stylet[ind];
		}
	</script>
</head>
<body>
	<table onMouseOver="chbg(this,0)" onMouseout="chbg(this,1)" class="plain">
		<tr>
			<td>F.u.b.a.r.</td>
		</tr>
	</table>
</body>
</html>

shovi [31.05.2003 14:14:35]

#

Sori, kämmäsin, tarkoitin solua. Taustavärin vaihtaminen onnistuisi vaikkapa näin:

<td bgcolor="#FFFFFF" onmouseover="this.style.backgroundColor='#FFFFFF­';" onmouseout="this.style.backgroundColor='#000099'" height="12" width="150">
Tai sitten edellä ehdoitettujen tapojen mukaisesti (mikä voisi olla parempi), mutta miten solusta saisi linkin?

NiKC [31.05.2003 20:11:35]

#

onClick -eventiä käyttämällä varmaankin. Hiiren kursori tosin pitää muuttaa manuaalisesti.

shovi [02.06.2003 13:27:23]

#

Määritetään css:stä cursor-style: hand; vai?

NiKC [02.06.2003 16:21:53]

#

esim niin.

kokeilin tehdä myös näin:

<a href="#">
    <table>
    	<tr><td>This is a table</td></tr>
    	<tr><td>And it is a href</td></tr>
    </table>
</a>

ja se näyttäisi toimivan.

edit: muotoilua

Blaze [02.06.2003 23:03:53]

#

lainaus:

kokeilin tehdä myös näin:

<a href="#">
    <table>
    	<tr><td>This is a table</td></tr>
    	<tr><td>And it is a href</td></tr>
    </table>
</a>

Eipä ole syntaktisesti korrektia. Lievästi provosoiden selaimessa on bugi, jos se koko taulukon noin tekee linkiksi.

Hyvää tapaa tehdä kokonaisesta taulukosta linkki ei ole, javaskriptillä voi toki sanoa

<table onclick="location.replace('http://munosote.example');">

mutta silloin pitää muistaa huolehtia, että jossain on ihan tavallinenkin linkki meille javaskriptittömille.

snakari [03.06.2003 00:35:25]

#

tai

<table onclick="document.location='http://domain.com'">

en sitten tiedä kumpi on parempi.

NiKC [03.06.2003 08:21:28]

#

juu niinhän mä tossa vähän ylempänä kirjoittelinkin. huvikseni vaan kokeilin onnistuuko taulukon "oikea" linkittäminen. mozillassa se ainakin toimi. en kokeillut muussa.

shovi [06.06.2003 11:25:44]

#

Nyt tulikin sitten lisää mutkia matkaan. Tein scriptin joka vaihtaa solun vieressä olevan kuvan toiseksi tällä tapaa:

imageen: id="kuva"
sitten soluun:

onmouseover="kuva.src='kuva2.png'" onmouseout="kuva.src='kuva1.png'"

Tässä probleemana on, että tämän jälkeen en voi enää vaihtaa solun taustaväriä samalla keinolla, siis tällä tapaa:

onmouseover="this.style.backgroundColor='#FFFFFF'" onmouseout="this.style.backgroundColor='#000099'"

Tuo NiKC:in "fubar"- juttu näyttäisi toimivan muuten, mutten saa sitä toimimaan omilla sivuillani.

EDIT: viilailua

Blaze [06.06.2003 17:17:43]

#

lainaus:

Tässä probleemana on, että tämän jälkeen en voi enää vaihtaa solun taustaväriä samalla keinolla

Noihin voi tunkea usemman lausekkeen, kun erottelee ne puolipisteellä.

onmouseover="kuva.src='kuva2.png'; this.style.backgroundColor='#FFFFFF'" onmouseout="kuva.src='kuva1.png'; this.style.backgroundColor='#000099'"

NiKC [09.06.2003 10:05:00]

#

tuon puolipisteellä erottelemisen lisäksi sen voi tehdä funkkarilla. siinä mun postaamassa koodissa oli esimerkki siitä. niin säilyy koodi imho selkeämpänä ja helpommin hallittavana.

// tähän tyyliin
onMouseover="setBgImg(id1, id2)" onMouseout="restoreBgImg(id1, id2)"

// tai näin jos tykkää tästä enempi
onMouseover="setBg(id1); setImg(id2)"

// tai näin jos on ihan kieroutunut, ja näitäkin näkee ;)
onMouseover="setBgForThisCellAndSwapImgInTheNextCell(idForCellToChangeBackground, idForImageToBeSwapped)"


// ja kun solussa on se mouseover niin paremetrina voi lähettää
// this:in jolloin attribuuttien muokkaaminen on näin helppoa
onMouseover="fiddleWithMyAttributes(this)"

function fiddleWithMyAttributes(foo)
{
   foo.attribute = bar;
}

// ja id:llähän se menee (uudemmilla selaimilla) näin
function fiddeDiddleDooBadem(id)
{
  document.getElementById(id).attribute = foo;

  // tai

  foo = document.getElementById(id);
  foo.attribute = bar;
}

eikä siinä vielä kaikki(tm)... vaan koodian voi näin myös helpommin uusiokäyttää ;D

syntaksivirheiden esiintymisen puutteesta ei mitään takeita, eikä myöskään koodin siirrettävyydestä.


Sivun alkuun

Vastaus

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

Tietoa sivustosta