"Thomas" <bossgisFJERNDETTE@hotmail.com> writes:
> Har et js problem.. har fundet et eksempel jeg tror der er løsningen men har
> brug for lidt hjælp til at forstå det..
....
> og javascripten som jeg har lidt svært ved at forstå er følgende
(ombrudt for læsbarhed)
> function toggleSet(rad) {
> var type = rad.value;
> for (var k=0,elm; elm = rad.form.elements[k]; k++)
> if (elm.className=='item')
> elm.style.display = elm.id==type? 'inline':'';
> }
> funktionen bliver kaldt i
> radio inputs ligesom:
> <input type="radio" name="itemtype" value="vehicle"
> onclick="toggleSet(this)">
> Første spørgsmål: Det der bliver parset medi
> toggleSet.. hvad er det en reference til? inputelementet?
Ja.
> andet spørgsmål:
> hvornår bliver betingelsen i for løkken opfyldt?
I dette tilfælde sendes input-elementet med value="veichle" med.
I funktionen gennemløbes alle elementer i samme form, og de som
har attributten class="item" bliver matchet af if-sætningen.
Af dem bliver de elementer (eller forhåbentlig "det element") som har
id="veichle" sat til at være display:inline, dem med andre id'er bliver
sat tilbage til deres oprindelige display-egenskab (som sikkert er "none").
> og hvad returnere
> rad.form.elements[k]?
Det evaluerer til det k'te element i formen.
"rad" er et input-element
"rad.form" er den form input-elementet ligger i.
"rad.form.elements" er samlingen af form-controls (fx input-elementer)
i formen.
"k" er et tal.
"rad.form.elements[k]" er det k'te element i formen.
> ja og så forstår jeg faktisk ikke rigtig if
> sætningen...
I HTML'en har forfatteren sat class="item" på de elementer der hvis
visning skal slås til og fra med radio-knapper. Alle andre elementer
bliver ignoreret i løkken.
Dem der påvirkes bliver vist når man vælger en radioknap med samme
value som deres id-attribut
> men kan dog heller ikke helt afgøre om det er gjort på en
> fornuftig måde..
Jeg er ikke imponeret. I det mindste misbruger de id-attributten,
da der ikke må være to elementer med samme id-værdi.
Jeg ville bygge det ind i class-attributten.
Hmm, noget i stil med:
<html>
<head><title>test</title>
<style type="text/css">
form.foo .foo, form.bar .bar, form.baz .baz { display: inline; }
form .foo, form .bar, form .baz { display : none; }
</style>
</head>
<body>
<form action="">
<input type="radio" name="subselect" value="foo"
onclick="this.form.className=this.value;"> Foo<br>
<input type="radio" name="subselect" value="bar"
onclick="this.form.className=this.value;"> Bar<br>
<input type="radio" name="subselect" value="baz"
onclick="this.form.className=this.value;"> Baz<br>
<input type="text" class="foo" value="something">
<input type="text" class="bar" value="other">
<input type="checkbox" class="bar">
<input type="button" class="baz" value="Baz!">
</form>
</body>
</html>
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'