Birger Sørensen skrev:
> Jørgen Farum Jensen formulerede spørgsmålet:
>> Her er et forslag:
>>
http://www.webdesign101.dk/javascript/visogskjul.php
>
> God artikel, der kommer rundt i hjørnerne.
> Der er dog en fejl. Citerer lige :
> "
> Betingelsesoperatoren
> ...
> if (betingelse) ? instruks1 : instruks2;
> ...
> "
> Teksten er ikke rigitg. "Betingelsesoperatoren" (Terney opreator),
> skrives ikke med if , og den returnerer altid et eller andet - det gør
> if aldrig - og du bruger den "forkert"..
>
> var ens = ( a == b) ? 'ja' : 'nej';
> var max = ( a > b) ? a : b;
> ens er nu 'ja' hvis a == b, og 'nej' hvis de ikke er ens og
> max er det største af tallene a og b.
>
> Som du bruger den, er det bare en anden måde at skrive en if else, og du
> bruger ikke returværdien, som faktisk er det væsentlige ved terney
> operatoren.
> "Betingelsesoperatoren" er en operator (som +, -, * og /), mens if er en
> kontrol struktur.
> Forklaret i ord, så udfører en if/else det ene eller andet, afhængigt af
> en betingelse.
> Ternay operatoren returnerer det ene eller det andet, afhængigt af
> betingelsen, og bruges til at vælge mellem to værdier (eller nestet
> mellem flere - men det bliver som regel meget lidt læsevenligt). Og i
> modsætning til if'en, kan man ikke bruge en ternay operator uden "else"
> delen, og der kan kun være een statement i hver af de to afdelinger.
> Så rent forståelsesmæssigt, er det forkert at bruge den som du gør.
>
> Der er vel altid en gråzone, hvor man kan bruge både if/else og Ternay.
> Man kan altid bruge en if i stedet for en Ternay, Når man har forstået
> den rigtigt, er Ternay operatoren dog både hurtigere at skrive og - IMHO
> - nemmere at læse.
> Den måde du bruger den på her, er imidlertid til at udføre det ene eller
> det andet - og det er en opgave for if, ikke Ternay operatoren.
> Dine to funktioner kan skrives sammen - når du nu er i gang med at
> minimere/optimere
>
> "...
> function visElement(objekt) {
> var blok = document.getElementById(objekt).style;
> (blok.visibility == "visible") ?
> blok.visibility="hidden" : blok.visibility="visible";
> }
> function skjulElement(objekt) {
> var blok = document.getElementById(objekt).style;
> (blok.visibility == "hidden") ?
> blok.visibility="visible" : blok.visibility="hidden";
> }
> ..:"
> F.eks, sådan :
> function VisEllerSkjulElement(objekt) {
> var vises = document.getElementById(objekt).style.visibility;
> vises = ( vises == 'visible') ? 'hidden' : 'visible';
> }
>
> "
> Kopierer du koden
> – skal du huske at fjerne de --> tegn, der er indsat af hensyn til
> linieombrydningen på denne side.
> Linier, der adskilt af disse tegn, skal i virkeligheden være hele
> ubrudte linier uden mellemrum.
> "
> Det er ret vigtigt at linieskiftet fjernes også. "moderne" fortolkere,
> accepterer at man udelader det ; der anvendes til afslutning af
> expressions. Til gengæld sætter de dem så selv ved linieskift, hvis det
> ikke er der, hvilket vil give indtil flere fejl...
>
>
> Det er ikke for at være kritisk - håber at sprede lidt forståelse og
> udrydde lidt mis-do-
Hvilket du også har opnået. Tak for det.
Og det går nu op for mig hvorfor jeg tit
har haft det umådeligt svært med af at
afkode nogle scripts der bruger ternary
operator på den rigtige måde...
--
Jørgen Farum Jensen
http://webdesign101.dk
..