Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Mitä vikaa tässä JavaScriptissä?

Sivun loppuun

gyperfox [01.01.2007 09:53:06]

#

Hei,
Voisitteko kokeneempina kertoa, mitä vikaa alla olevassa scriptissä on? Firebug ei löytänyt, siitä mitään korjattavaa, mutta se jää pyörittämään selainta (Firefox 2.x) ja Ie seiskalla ei edes suostu suorittamaan.

<html>
<head>
<script type="text/javascript">
function valinta(m)
{
document.writeln(m + "<br>")
}
</script>
</head>
<body>

<form>
<select>
<option onclick="valinta('11')">nimi1</option>
<option onclick="valinta('22')">nimi2</option>
<option onclick="valinta('33')">nimi3</option>
</select>
</form>

</body>
</html>

Mod. edit: kooditagit

Kentti [01.01.2007 12:08:35]

#

Kooditagit..


Ja puhdas arvaus, mutta muistaakseni document.writeln() pistää rivinvaihdon perään. document.write() voisi olla parempi. Ja tuossa siis yrität tulostaa pelkästään tuon homman ikkunaan.. hmm..

Blaze [01.01.2007 13:45:14]

#

En nyt tarkemmin jaksa kokeilla, mutta document.write():han kirjoittaa juuri siihen kohtaan, jossa se on, tässä tapauksessa siis tuonne headin sisälle, mikä ei varmaankaan oo se paikka, johon halusit kirjottaa.

Kentti [01.01.2007 13:58:57]

#

Headin sisään kirjoittaminen taas tarkoittaa sitä, että tyhjä, valkoinen ruutu + tuo teksti :)

gyperfox [01.01.2007 14:03:01]

#

Joo, ei nätä auttavan, vaikka korjasin ton document.writen ja siirsin koko roskan pois headista.

pale [02.01.2007 11:16:04]

#

Tässäpä ongelmasi ja ratkaisu noin suurin piirtein:

http://www.sitepoint.com/forums/showthread.php?t­=217428

Pekka Karjalainen [02.01.2007 12:48:32]

#

Suurin vika on se, että document.write toimii vain kun dokumentti ei ole vielä valmis. Valmiiseen dokumenttiin voi tehdä paremmin muutoksia DOM-rajapinnan kautta. Yksinkertainen esimerkki koodisi pohjalta seuraa.

<html>
<head>
<script type="text/javascript">
function valinta(m)
{
paikka = document.getElementById("outputti");
teksti = paikka.textContent
teksti += " " + m
paikka.textContent = teksti
}
</script>

</head>
<body>

<form>
<select>
<option onclick="valinta('11')">nimi1</option>
<option onclick="valinta('22')">nimi2</option>
<option onclick="valinta('33')">nimi3</option>
</select>
</form>

<p id="outputti"> Tämä näkyy aluksi. Jatkoa seuraa:
</p>

</body>
</html>

Lähteitä:
http://www.google.fi/search?q= javascript dom reference

Parempi tapa on joku hyvälaatuinen ja eri selaimilla testattu kirjasto:
http://mochikit.com/

Koodini antaa IE7:ssa turvavaroituksen, eikä minulla ole aavistustakaan miksi. Se ei myöskään toimi vaikka varoituksen ohittaa, mikä ehkä johtuu siitä, että käyttämäni funktiot ja tietueet ovat Mozillan JS-referenssistä...

Tämän takia kannattaa käyttää Mochikittiä (tms.). Se on testattu melkein kaiken sortin selaimilla jo valmiiksi.

Kpk (joo, ei ne varmaan Lynxillä)

Pöytälamppu [02.01.2007 15:35:27]

#

Tämän pitäisi toimia myös IE:llä. Itselläni se ainakin toimi. Ilmeisesti IE:ssä ei toimi tuo onclick option-tagin sisällä.

<html>
<head>
<script type="text/javascript">

function valinta()
{
var lahde = document.getElementById("inputti");
var paikka = document.getElementById("outputti");

paikka.innerHTML = paikka.innerHTML + " " + lahde.options[lahde.selectedIndex].value;
}
</script>

</head>
<body>

<form>
<select onChange='javascript:valinta()' id="inputti">
<option value="11">nimi1</option>
<option value="22">nimi2</option>
<option value="33">nimi3</option>
</select>
</form>

<p id="outputti"> Tämä näkyy aluksi. Jatkoa seuraa myös IE:llä:
</p>

</body>
</html>

Pekka Karjalainen [03.01.2007 12:26:56]

#

Toimii minulla IE7:ssa. Tosin on se omi(tui/nai)suus, että samaa valintaa ei voi peräkkäin toistaa, vaan eikös se ollut tuossa omassanikin? Eipä tuo ole merkityksellistä tällaisessa kokeiluohjelmassa.

Turvavalitusta se taas esitti. Saattaa johtua siitä, että säädin heti IE7:n tultua updaten kautta sitä käyttämään kaikista kovimpia turva-asetuksia. Nimimerkillä Vahingoista oppinut... :-)

Kiitoksia tästä versiosta Pöytälampulle.

gyperfox [03.01.2007 16:07:47]

#

Kiitos kaikille!
Jos löytyy vielä javascriptin aloittamiseen vinkkejä ym.. niin laittakaa tähän.


Sivun alkuun

Vastaus

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

Tietoa sivustosta