Vraag & Antwoord

Webprogrammeren & scripting

[javascript] div id veranderen met onclick

14 antwoorden
  • 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
  • Mijn vraag is dan meteen: "Waarom zou je dat willen ?????"
  • 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.
  • "Het idee achter de aanpak vormt de basis voor succes" :wink: m.a.w. het is beter om de id's gelijk te houden (zo weet je tenminste altijd met welke div je aan het "praten" bent) en de eigenschappen van de div te wijzigen (in dit geval de positie op de pagina).
  • Het liefst zou ik de id's ook met rust laten. Dat maakt het een stuk duidelijker. Maar hoe krijg ik het dan voor elkaar? Mijn grijze massa kan ff niks anders verzinnen waardoor javascript "onthoudt" welke layer er boven staat. Snoopje
  • Javascript kan je laten 'onthouden' welke bovenaan staat door de id van die layer in een aparte variabele bij te houden.
  • 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
  • [quote:56280101c2] Op 20-02-2002 18:01, schreef Annie: Javascript kan je laten 'onthouden' welke bovenaan staat door de id van die layer in een aparte variabele bij te houden. [/quote:56280101c2] Dat was ik dus ook van plan. Maar (zie boven) met een javascript error tot gevolg.
  • De error die ik krijg is trouwens: [quote:5aeeb9dcae] 'document.all[...].style' is null or not an object [/quote:5aeeb9dcae] <font size=-1>[ Dit Bericht is bewerkt door: Snoopje op 2002-02-20 18:12 ]</font>
  • 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
  • [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]
  • Oh sorry, die eerste ; was een typefout. Wat jij zegt heb ik dus, en dat pikt hij niet. S.
  • [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.
  • 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&lt;=Stappen) { i=i+1; ... setTimeout(&quot;Beweeg(variabele1)&quot;,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] <font size=-1>[ Dit Bericht is bewerkt door: Snoopje op 2002-02-21 17:46 ]</font>

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.