Ga naar inhoud

[javascript] div id veranderen met onclick


anoniem

Aanbevolen berichten

Ik ben op zoek naar de code waarmee ik een layer een andere id kan geven. Ik heb nu: [code:1:c3ee4056cb] <div id="image1">..</div> <div id="image2">..</div> <div id="image3">..</div> <div id="image4">..</div> [/code:1:c3ee4056cb] Nu wil ik dat als ik op "image2" klik dat die <div id="image1"> krijgt en vice versa. En datzelfde voor de andere layers. Nu had ik hetvolgende bedacht: [code:1:c3ee4056cb] document.all['image1'].id='temp'; document.all['image2'].id='image1'; document.all['temp'].id='image2'; [/code:1:c3ee4056cb] Ik heb het idee dat ik hiermee in de buurt kwam, maar er hij doet het nog niet. Weet iemand wat ik fout doe, of misschien een betere/makkelijkere manier om layers van naam te laten wisselen? Alle tips welkom! Snoopje
Link naar reactie
Die vraag had ik kunnen verwachten. Het klinkt misschien een beetje raar allemaal. Maar ik wil het gebruiken om een dynamisch menu te maken, waarbij het laatst aangeklikte menu-item boven staat. Ik heb dus vier item's in vier layer's (<div>) onder elkaar. Als ik bijvoorbeeld op item 3 klik wil ik dat 1 en 3 van plek wisselen. Enz. Waarom dan die id wisselen? Goede vraag, maar het de enige manier die ik kon bedenken om het bovenstaande voorelkaar te krijgen. Mijn gedachte-kronkel was dus, dat als ik de layer die boven staat een bepaald id mee kan geven ik makkelijk kan wisselen (altijd wisselen met hetzelfde id) en dat als ik op de bovenste layer klik er niks gebeurd! Zo lang verhaal, maar hopelijk verhelderend. Hopelijk weet iemand me nu te helpen Snoopje.
Link naar reactie
Nog iets wat ik niet begrijp Als ik bijv. zeg: [code:1:73ca1d4767] document.all["image1"].style.pixelLeft=200; [/code:1:73ca1d4767] Gaat alles goed. Zeg ik: [code:1:73ca1d4767] document.all[laag1].style.pixelLeft=200; [/code:1:73ca1d4767] waarbij "laag1" een variabele is met de waarde "image1". Dan wordt de regel wel uitgevoerd, maar daarna krijg ik een javascript error op die regel en wordt het script afgebroken. Terwijl [code:1:73ca1d4767] alert(document.all[laag1].style.pixelLeft); [/code:1:73ca1d4767] netjes de waarde ophoest. :???: Snoopje
Link naar reactie
Ik ben weer een stapje verder gekomen, maar wie helpt mij nog verder? De regel: [code:1:640340cda7] document.all[laag1].style.pixelLeft=200; [/code:1:640340cda7] moest met [i:640340cda7]eval[/i:640340cda7] geschreven worden. Die doet het dus nu. Maar nu een ander probleem: Hoe geef ik aan een functie een variabele mee? Voorbeeld: [code:1:640340cda7] function Noemeensiets();{ . //hier wat code . Noemeensiets(); } [/code:1:640340cda7] Dit doet het. Maar nu: [code:1:640340cda7] function Noemeensiets(variabele1);{ . //hier wat code . Noemeensiets(variabele1); } [/code:1:640340cda7] Dit werkt niet, maar hoe moet het wel. Ik roep de functie de eerste keer van buiten de functie op en daarna van binnen de functie zelf. [i:640340cda7]variabele1[/i:640340cda7] blijft onveranderd. Snoopje
Link naar reactie
[code:1:2fefb01fec] function Noemeensiets(variabele1);{ . //hier wat code . Noemeensiets(variabele1); } [/code:1:2fefb01fec] errmm ja.. die ; achter je functiedeclaratie hoort daar niet. daarmee sluit je hem af. De code eronder is een block code dat eenmalig bij het opstarten wordt uitgevoerd. misschien gaat dit beter? [code:1:2fefb01fec] function Noemeensiets(variabele1){ //hier wat code Noemeensiets(variabele1); } [/code:1:2fefb01fec]
Link naar reactie
[quote:d9ecf4b3ec]function Noemeensiets(variabele1){ //hier wat code Noemeensiets(variabele1); } [/quote:d9ecf4b3ec] Als je letterlijk bovenstaande gebruikt dan zit je natuurlijk voor je het weet in een oneindige recursie. Dus ik neem aan dat de namen van de functies in het voorbeeld ongelukkig gekozen zijn :wink: De manier van variabele doorgeven is goed, maar het kan zijn dat je in de problemen komt met de scope van de variabelen, of variabele die dubbel gedeclareerd zijn, of momenten waarop de variabelen niet meer bekend zijn (bijv. bij timeouts). Lees eens wat meer over variabelen-gebruik in javascript (bijv op: [url=http://developer.netscape.com/docs/manuals/js/client/jsref/index.htm]DevEdge[/url]). Of post een iets specifieker voorbeeld.
Link naar reactie
Nou helaas gebruik ik wel letterlijk het bovenstaande. En niet per ongeluk. Ik doe het omdat ik ook een loop wil genereren. Maar het gaat een beetje mis :sad: [i:eae25fceed]Variabele1[/i:eae25fceed] staat voor een layer. De functie verplaatst die layer (afhankelijk van andere var's) naar een bepaalde plek. Als ik dit met een for-loop doe of helemaal zonder loop springt de layer van de ene naar de andere plek, maar ik wil voor mijn menu dat ze verschuiven in kleine stapjes. Hierdoor wil ik het effect creeren dat de knoppen echt bewegen. Misschien dat er wel ergens zo'n scriptje te vinden is, maar ik wil het zelf doen :smile: Maar terug naar het script. Ik roep de verplaats functie aan vanaf een [i:eae25fceed]onClick[/i:eae25fceed]. En met een if-tag creeer ik dus een loop: [code:1:eae25fceed] function Beweeg(variabele1){ if (i<=Stappen) { i=i+1; ... setTimeout("Beweeg(variabele1)",10); }} [/code:1:eae25fceed] Maar nu begrijp ik dus dat het fout gaat door de setTimeout?!? Bedankt voor je hulp zover. Ik hoop dat je een manier weet waarop ik dit kan oplossen. Want ik zit duidelijk aan de grens van mijn javascript kennis. Snoopje [edit]Typefout[/edit] [ Dit Bericht is bewerkt door: Snoopje op 2002-02-21 17:46 ]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...