/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Skjul/vis flere elementer på en gang
Fra : Lars K. Christensen


Dato : 02-06-05 16:33

Jeg har en web-side med en række overskrifter med tilhørende tekst. Nu vil
jeg gerne give brugerne mulighed for, ved klik på en knap, at vælge om de
vil se begge dele eller kun overskriften.
Det er jo i udgangspunktet let nok: man knytter et ID til hver tekst og
laver en form med en knap som via en JS-funktion ændrer tekstens
display-attribut. Nu er der bare det ved det, at det kun virker, hvis hvert
stykke tekst har sit eget ID som i eksemplet nedenfor.
Og det bliver ret bøvlet når siden udskrives dynamisk med indhold fra en
database, og antallet af overskrifter/tekster hele tiden ændrer sig.
Der må da være en eller anden elegant løsning på det, som jeg bare
fuldstændig har overset

MVH Lars

Eksempel:

<html>
<head>
<script language="JavaScript" type="text/javascript">
//skjul og vis tekster//
function VisFra() {
Visning1.style.display = "none";
Visning2.style.display = "none";
}
function VisTil() {
Visning1.style.display = "block";
Visning2.style.display = "block";
}
</script>

</head>

<body>
<h1>Nyheder:</h1>

<FORM name="visning"><INPUT type="radio" name="R1" checked
onClick="VisTil();">Vis alt<INPUT type="radio" name="R1"
onClick="VisFra();">Vis kun overskrifter<BR></FORM>
<h2>En overskrift</h2>
<P ID="Visning1" style="display: block">En tekst</P>
<h2>En anden overskrift</h2>
<P ID="Visning2" style="display: block">En anden tekst</P>

</body>
</html>



 
 
Ryan Kristensen (02-06-2005)
Kommentar
Fra : Ryan Kristensen


Dato : 02-06-05 18:01

On Thu, 02 Jun 2005 17:33:29 +0200, Lars K. Christensen
<spamfilter@christianehoej.dk> wrote:

> Det er jo i udgangspunktet let nok: man knytter et ID til hver tekst og
> laver en form med en knap som via en JS-funktion ændrer tekstens
> display-attribut. Nu er der bare det ved det, at det kun virker, hvis
> hvert
> stykke tekst har sit eget ID som i eksemplet nedenfor.

Et id er unikt, derfor kan du selvfølgelig ikke genbruge det. Hvis du vil
bruge en fællesdefinition, så skal du bruge class.
Derved ville du kunne gennemløbe alle div og teste om deres className er
lig med det du gerne vil have.
F.eks:
var myDivs = document.getElementsByTagName('div');
for (a=0;a<myDivs.length;a++) {
if (myDivs.className == 'visning') {
myDivs.style.display = 'none';
}
}

Hvis du vil benytte id og du ved at alle dine id hedder Visningx og x er
et tal der stiger med en for hvert felt.
Så kan du løse det med en rekursiv funktion:
function VisFra(antal) {
if (document.getElementById('Visning'+antal)) {
document.getElementById('Visning'+antal).style.display='none';
VisFra(antal+1);
}
}

Så skal du bare kalde funktionen med VisFra(1)

--
Ryan Kristensen

Lars K. Christensen (02-06-2005)
Kommentar
Fra : Lars K. Christensen


Dato : 02-06-05 22:08


"Ryan Kristensen" <ryankristensen@hotmail.invalid> skrev i en meddelelse
news.srq5kkz7xxz6q7@news.inet.tele.dk...
> On Thu, 02 Jun 2005 17:33:29 +0200, Lars K. Christensen
> <spamfilter@christianehoej.dk> wrote:
>
> Hvis du vil benytte id og du ved at alle dine id hedder Visningx og x er
> et tal der stiger med en for hvert felt.
> Så kan du løse det med en rekursiv funktion:
> function VisFra(antal) {
> if (document.getElementById('Visning'+antal)) {
> document.getElementById('Visning'+antal).style.display='none';
> VisFra(antal+1);
> }
> }
>
> Så skal du bare kalde funktionen med VisFra(1)

Det fungerer - tak for hjælpen! Der er dog lige det problem, at det kun
virker i IE og ikke i Firefox?

MVH Lars



Ryan Kristensen (03-06-2005)
Kommentar
Fra : Ryan Kristensen


Dato : 03-06-05 07:12

On Thu, 02 Jun 2005 23:08:23 +0200, Lars K. Christensen
<spamfilter@christianehoej.dk> wrote:

> Det fungerer - tak for hjælpen! Der er dog lige det problem, at det kun
> virker i IE og ikke i Firefox?

Det virker hos mig i Mozilla 1.7.7.
Har du et online eksempel, hvor det ikke virker?

--
Ryan Kristensen

Lars K. Christensen (03-06-2005)
Kommentar
Fra : Lars K. Christensen


Dato : 03-06-05 21:55

> Har du et online eksempel, hvor det ikke virker?

Ja: www.christianehoej.dk/test.htm

MVH Lars



Ryan Kristensen (03-06-2005)
Kommentar
Fra : Ryan Kristensen


Dato : 03-06-05 22:40

On Fri, 03 Jun 2005 22:55:12 +0200, Lars K. Christensen
<spamfilter@christianehoej.dk> wrote:

>> Har du et online eksempel, hvor det ikke virker?
>
> Ja: www.christianehoej.dk/test.htm

Du har 2 problemer med den kode:
1: Du tildeler dine span id="visningx" og kalder den derefter fra
javascriptet med Visningx.
Du er nødt til enten at skrive Visning eller visning begge steder.
2: Du lukker ikke dine span, derimod lukker du nogle ikke eksisterende div.

Udover det skal du huske, at i xhtml skal alle tags og attributter skrives
med småt og lukkes (<br />).

--
Ryan Kristensen

Benny Nissen (04-06-2005)
Kommentar
Fra : Benny Nissen


Dato : 04-06-05 07:32

Ryan Kristensen wrote:

> Du har 2 problemer med den kode:
> 1: Du tildeler dine span id="visningx" og kalder den derefter fra
> javascriptet med Visningx.
> Du er nødt til enten at skrive Visning eller visning begge steder.
> 2: Du lukker ikke dine span, derimod lukker du nogle ikke eksisterende div.
>
> Udover det skal du huske, at i xhtml skal alle tags og attributter
> skrives med småt og lukkes (<br />).
>

Det kan så være grunden til, at der intet sker i Firefox ?

--
Benny Nissen

Lars K. Christensen (04-06-2005)
Kommentar
Fra : Lars K. Christensen


Dato : 04-06-05 10:23


"Ryan Kristensen" <ryankristensen@hotmail.invalid> skrev i en meddelelse
news.srtc43j3xxz6q7@news.inet.tele.dk...
> 1: Du tildeler dine span id="visningx" og kalder den derefter fra
> javascriptet med Visningx.

Fuldstændig rigtigt. En pinlig sjuskefejl

Men nu virker det - tak for hjælpen begge to

MVH Lars



Jens Gyldenkærne Cla~ (02-06-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 02-06-05 23:05

Lars K. Christensen skrev:

> Det fungerer - tak for hjælpen! Der er dog lige det problem,
> at det kun virker i IE og ikke i Firefox?

Har du et link til din side?

Har du tjekket om der kommer fejlmeddelelser i Firefox's
javascriptkonsol?
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste