08. maj 2005 - 01:36Der er
14 kommentarer og 1 løsning
Problemer med at vise indhold af en variabel
Jeg har defineret en variabel idT = title(img tag attributtens title). Jeg kan se den tekst, jeg har skrevet i title vha.: alert(idT); men jeg vil gerne kunne se samme title-tekst længere nede i koden. Her fx: <div id="picdscrp" style="display:none;"></div> picdscrp bliver synlig i forbindelse med en anden funktion og er defineret således:
#picdscrp { position:absolute; top:0px; left:0px; float:left; width:100px; height:100px; border:0; background-color:pink; margin:0; padding:0; } ...altså som en kasse (eller et layer)
Så hvordan får jeg indholdet af idT bragt til syne i #picdscrp?
Jeg vil bruge title i det efterfølgende img tag til en kort beskrivelse af det givne billede man ser. fx <img name="lillebillede1" id="lillebillede1" src="1.jpg" class="lilbill" title="Dette er en bil">
...men jeg vil gerne have "Dette er en bil" vist i en lille tekstbox/layer(egentlig bare et sted der er muligt at placere frit)
Både ja og nej, men jeg bør nok lige vise hvad siden skal gøre, så mit spørgsmål giver bedre mening. Først en forklaring, dernæst kode: Siden består af 25 små udsnit af billeder. Når man klikker på et af de 25 små udsnit, forsvinder de resterende 24 små udsnit, og resten af det billede der hører til det udsnit man klikkede på, kommer til syne på skærmen. Ydermere kommer der efter et givet tidspunkt (settimeout) et link(til galleri) til syne. Dette bringer brugeren tilbage til forsiden(de 25 små udsnit), og man kan nu klikke på et af de andre udsnit, for at se et nyt stort billede. Som det sidste er det så, at jeg gerne vil have en lille beskrivelse af det aktuelle billede der kommer til syne, nå man klikker på et af de små udsnit. Den beskrivelse skriver jeg i img tag attributten title for det lille billede. ligesom linket (til galleri) vil jeg så have en lille boks eller bare et sted hvor denne beskrivelse bliver vist. Så det skal ikke være onmouseover/out at beskrivelsen bliver vist, men som en del af scriptet det starter processen som henholdsvis "fjerner" de små billeder og viser det store. Det skal siges at jeg har fået (stor)hjælp til koden her på eksperten (tak for det), jeg mener hvis jeg selv havde lavet den nedenstående kode kunne jeg vel også selv lave det sidste.
function applyOnclick(){ var img = document.images; for(i=0;img.length>i;i++){ if(img[i].className=='lilbill'){ img[i].onclick = function(){showBig(this);} } } } var raekkefolge,num,intId,ny = true; function showBig(elm){ if(ny)ny = !ny; else return; var id=elm.name.replace(/^.*?(\d+)$/,"$1"),idT=elm.title,tmp,n; num = 0; raekkefolge = new Array(); for(i=0;25>i;i++)raekkefolge[i] = i+1; for(i=0;25>i;i++){ n = Math.floor(Math.random()*raekkefolge.length); tmp = raekkefolge[i]; raekkefolge[i] = raekkefolge[n]; raekkefolge[n] = tmp; setTimeout("document.getElementById('visForsideLink').style.display = 'inline';",3000)
}
alert("billede" + id + ".jpg" + idT);//her har jeg testet at det der skrives i title medtages, men jeg kan så ikke få det det rigtige sted hen document.images['stortbillede'].src = "billede" + id + ".jpg"; txt = idT; intId = setInterval('hideSmall()',80);
Jeg formoder det er i function showBig(elm) der skal skrives den kode der tager indholdet af title og derefter placerer dette i det ønskede layer(i dette tilfælde #picdscrp), men jeg har ikke rigtig haft held med at få skrevet det rigtige.
Jo da - det er jo lige som det skal være. Takker. Det er meget tæt på perfekt. Mit layer der viser title teksten skal så bare forsvinde igen når man trykker på link: til galleri.
Ok allerførst en stor tak - nu er den der, sådan rent funktionsteknisk. Mht. at det skal i en funktion. Er det fordi der ikke bør stå for meget DHTML, som der gør nu, i bodydelen? Hvis det skal i en funktion, er det så en selvstændig funktion der blot kaldes onclick(jeg mener det skal ikke skrives ind i nogle af de andre funktioner i script-delen i head)?
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.