Hej igen. Jeg bliver klokke rundt i mit javascript :)
Jeg har en dynamisk div hvis indhold skal ændres i forhold til nogle forskellige links man trykker på. Jeg har fire links der hver sætter en variabel; "stat" hedder den, til et tal mellem et og fire, så langt så godt.
Indholdet i diven skulle så gerne skifte efter hvilket tal variablen "stat" er sat til.
Jeg har derfor lavet et en switch til formållet:
onClick='setStat(1)' // denne bliver fyret af når der trykkes på et af linkene
function setStat( value ) { // hvilket starter denne function, alt dette virker
stat = value; }
// inde i min div har jeg så:
switch (stat) {
case 1:
document.write(" lasagne ");
break; case 2:
document.write(" rafrafafjdg");
break; case 3: statements; // etc break; case 4: statements; // etc break;
default: document.write("braf");
}
Men indholdet skifter ikke. Har det noget at gøre med at switch ikke skifter dynamisk med scriptet, at det skal loades igen hvis variablen ænder sig?
Jeg forstår ikke helt din kode. Du skriver, at switch'en er inde i div'en. Hvordan kan det lade sig gøre? Kan jeg se hele din kode i sammenhæng, evt. et link?
Jeg har erklæret den global ved at skrive "var stat", i starten af koden. Det glemte jeg lige at skrive. Og min kode er ikke lige online nu, plus den er cirka 1000 linier lang, det er stort site jeg er ved at lave, så jeg tror ikke i nemt vil kunne finde rundt.
Men jeg kan prøve at forklare. Altså jeg har en onclick event når man trykker på et link. I stedet for at linket skulle reloade hele siden, ville jeg gøre det mere Dhtml agtigt, så indholdet i en div bare skiftede. Switch ligger på bedste spaggeti kode manner inde i diven, omsluttet af <script> tags. Funktionerne ligger i headeren. Functionn i headeren som skifter værdien af "stat" skulle så gerne få switchen til at "switche" nu da variablen er ændret, og nyt content skal vises.
Det kan godt være at jeg er total off, og der en nemmere måde at gøre det på, men jeg er først lige startet med javascript (:
Ja, du er ret off :) din kode i div'en køres kun, når parseren når den, dvs. ved load, før stat er sat. Din switchkode skal ind i en funktion, der kan kaldes på det rigtige tidspunkt. Men igen, det er ret svært for mig at sige præcis hvordan, for hvis det skal være ordentligt kodet afhænger det af, hvordan resten af koden ser ud.
Nej, det ved du forhåbentlig ikke - og det er ingenlunde det, w13 skriver. En switch kan være skrevet, hvor somhelst i dokumentet - men uden kode er det, som w13 skriver - umuligt at sige, hvad du skal gøre :)
Som Olebole siger, er det ikke fordi det er en switch, at den køres ved onload. Det er, fordi du ikke har den i en funktion. Funktioner kan kaldes, når man har brug for dem, men når den står uden for en funktion, kan den ikke senere bruges. (I hvert fald ikke sådan uden videre. =)
Ok, det var også sådan jeg forstod det, hehe. Jeg tror jeg er ved at få lidt programmør kuller. Jeg må lige bakse lidt med det og putte switch ind i en funktion.
ok. Jeg har nu sat switch ind i en function, der ligger inde i en div. Men når functionen bliver eksekveret bliver indholdet ikke skrevet i diven, men på en blank side, i 1 sekunds tid?
og tryk på "most heard tracks" in firkanten "track & artist popularity" nederst til højre. Tallet bliver ikke skrevet i en den div som javascript koden ligger i men på en blank side?
Jeg vil meget gerne trykke på et link, men det kræver, du skriver det i en størrelse, der kan læses. Grå tekst i en latterlig lille størrelse gør i hvertfald, at siden er ubrugelig for mig :)
Men hvis nu jeg gerne istedet for lasagne vil skrive noget langt ind med blandt andet apostroffer:
<div id="project_news"><div id="header">New tracks and images - february 07/08</div>Today i have uploaded a lot of my old tracks in the collection "fun wallapanka". Go check it out. I have also put a few new pictures in the album. <div id="private_artist_more"> <span id="private_pagelinks" ><a href="#" onClick='closeMyPopup("project_news"),projectCheckClose()'>close window</a></span> </div></div>
hvordan håndterer jeg det?
Jeg prøvede med:
document.getElementById('project_statistics').firstChild.nodeValue = ("<div id='project_news'><div id='header'>"); document.getElementById('project_statistics').firstChild.nodeValue = (" New tracks and images - february 07/08 "); document.getElementById('project_statistics').firstChild.nodeValue = (" </div> "); document.getElementById('project_statistics').firstChild.nodeValue = (" Today i have uploaded a lot of my old tracks in the collection 'fun wallapanka'. Go check it out. I have also put a few new pictures in the album. "); document.getElementById('project_statistics').firstChild.nodeValue = (" <div id='private_artist_more'> <span id='private_pagelinks' > "); document.getElementById('project_statistics').firstChild.nodeValue = (" <a href='#' onClick='closeMyPopup('project_news'),projectCheckClose()'>close window</a></span> "); document.getElementById('project_statistics').firstChild.nodeValue = (" </div></div> ");
men dette resulterede bare i at den overskriver sig selv og ender med kun at skrive den sidste nodeValue ud.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.