Avatar billede topperware Nybegynder
08. maj 2005 - 01:36 Der 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?
Avatar billede olebole Juniormester
08. maj 2005 - 02:03 #1
<ole>

Det er totalt sort, hvad du mener

/mvh
</bole>
Avatar billede topperware Nybegynder
08. maj 2005 - 02:14 #2
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)
Avatar billede topperware Nybegynder
08. maj 2005 - 02:19 #3
...så spørgsmålet er vel bare hvordan får jeg vist indholdet af title i et layer et eller andet sted på siden.
Avatar billede olebole Juniormester
08. maj 2005 - 02:58 #4
Jeg er stadig lidt i tvivl, men er det noget à la det her, du mener:

<img name="lillebillede1" id="lillebillede1" src="1.jpg" class="lilbill"
    title="Dette er en bil" onmouseover="document.getElementById('gnu').innerHTML=this.title"
    onmouseout="document.getElementById('gnu').innerHTML=''">

<div id="gnu">&nbsp;</div>
Avatar billede topperware Nybegynder
08. maj 2005 - 10:38 #5
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.

<html>
<head>
<title>none</title>
<style type="text/css">
html,body{height:100%;border:0;margin:0;padding:0;font-family:verdana;}
#img-container{
position:relative;
width:500px;
height:500px;
padding:0px;
}
#stortbillede{
position:absolute;
top:0px;
left:0px;
width:500px;
height:500px;
z-index:-1;
}
.lilbill{
position:absolute;
top:0px;
left:0px;
float:left;
width:100px;
height:100px;
z-index:1;
border:0;
margin:0;
padding:0;
}
#picdscrp
{
position:absolute;
top:0px;
left:0px;
float:left;
width:100px;
height:100px;
border:0;
background-color:pink;
margin:0;
padding:0;
}
</style>
<script type="text/javascript">

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);

}

function hideSmall(){
document.getElementById('lillebillede'+raekkefolge[num++]).style.display='none';
if(num==25){clearInterval(intId);ny = true;}
}
window.onload = applyOnclick;
</script>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
</head>
<body>
<table align="center">
<tr>
<td>
<div id="img-container"> <img name="stortbillede" id="stortbillede" src="default.jpg">
        <img name="lillebillede1" id="lillebillede1" src="1.jpg" class="lilbill" title="Dette er en bil">
        <img name="lillebillede2" id="lillebillede2" src="2.jpg" class="lilbill" title="blablabla2" style="left:100px;">
        <img name="lillebillede3" id="lillebillede3" src="3.jpg" class="lilbill" title="blablabla3" style="left:200px;">
        <img name="lillebillede4" id="lillebillede4" src="4.jpg" class="lilbill" title="blablabla4" style="left:300px;">
        <img name="lillebillede5" id="lillebillede5" src="5.jpg" class="lilbill" title="blablabla5" style="left:400px;">
        <img name="lillebillede6" id="lillebillede6" src="6.jpg" class="lilbill" title="blablabla6" style="top:100px;">
        <img name="lillebillede7" id="lillebillede7" src="7.jpg" class="lilbill" title="blablabla7" style="top:100px;left:100px;">
        <img name="lillebillede8" id="lillebillede8" src="8.jpg" class="lilbill" title="blablabla8" style="top:100px;left:200px;">
        <img name="lillebillede9" id="lillebillede9" src="9.jpg" class="lilbill" title="blablabla9" style="top:100px;left:300px;">
        <img name="lillebillede10" id="lillebillede10" src="10.jpg" class="lilbill" title="blablabla10" style="top:100px;left:400px;">
        <img name="lillebillede11" id="lillebillede11" src="11.jpg" class="lilbill" title="blablabla11" style="top:200px;">
        <img name="lillebillede12" id="lillebillede12" src="12.jpg" class="lilbill" title="blablabla12" style="top:200px;left:100px;">
        <img name="lillebillede13" id="lillebillede13" src="13.jpg" class="lilbill" title="blablabla13" style="top:200px;left:200px;">
        <img name="lillebillede14" id="lillebillede14" src="14.jpg" class="lilbill" title="blablabla14" style="top:200px;left:300px;">
        <img name="lillebillede15" id="lillebillede15" src="15.jpg" class="lilbill" title="blablabla15" style="top:200px;left:400px;">
        <img name="lillebillede16" id="lillebillede16" src="16.jpg" class="lilbill" title="blablabla16" style="top:300px;">
        <img name="lillebillede17" id="lillebillede17" src="17.jpg" class="lilbill" title="blablabla17" style="top:300px;left:100px;">
        <img name="lillebillede18" id="lillebillede18" src="18.jpg" class="lilbill" title="blablabla18" style="top:300px;left:200px;">
        <img name="lillebillede19" id="lillebillede19" src="19.jpg" class="lilbill" title="blablabla19" style="top:300px;left:300px;">
        <img name="lillebillede20" id="lillebillede20" src="20.jpg" class="lilbill" title="blablabla20" style="top:300px;left:400px;">
        <img name="lillebillede21" id="lillebillede21" src="21.jpg" class="lilbill" title="blablabla21" style="top:400px;">
        <img name="lillebillede22" id="lillebillede22" src="22.jpg" class="lilbill" title="blablabla22" style="top:400px;left:100px;">
        <img name="lillebillede23" id="lillebillede23" src="23.jpg" class="lilbill" title="blablabla23" style="top:400px;left:200px;">
        <img name="lillebillede24" id="lillebillede24" src="24.jpg" class="lilbill" title="blablabla24" style="top:400px;left:300px;">
        <img name="lillebillede25" id="lillebillede25" src="25.jpg" class="lilbill" title="blablabla25" style="top:400px;left:400px;">
      </div>
</td>
</tr>
<tr>
<td align="center">

<a href="#" id="visForsideLink" onclick="for(i=1;26>i;i++){document.getElementById('lillebillede'+i).style.display='inline';};this.style.display='none';return false;" style="display:none;">til galleri</a>


</td>
</tr>
</table>
</body>
</html>
Avatar billede topperware Nybegynder
08. maj 2005 - 14:58 #6
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.
Avatar billede roenving Novice
09. maj 2005 - 00:44 #7
Kan du ikke bare udskifte:

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

med:

document.getElementById('picdscrp').innerHTML = elm.title;
Avatar billede topperware Nybegynder
09. maj 2005 - 01:19 #8
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.


Det ser således ud i koden:

<a href="#" id="visForsideLink" onclick="for(i=1;26>i;i++){document.getElementById('lillebillede'+i).style.display='inline';};this.style.display='none';return false;" style="display:none;">til galleri</a>

<div id="picdscrp" style="display:none;">&nbsp;</div> Skal denne linie skrives ind i ovenstående <a href>....</a> for at det sker, eller hvad?
Avatar billede topperware Nybegynder
09. maj 2005 - 01:26 #9
Eller er det måske noget med en if sætning der tjekker om #picdscrp er synlig, og hvis ja så sættes den til hidden?
Avatar billede roenving Novice
09. maj 2005 - 01:28 #10
Ja, det er det nok, f.eks.

<a href="#" id="visForsideLink" onclick="for(i=1;26>i;i++){document.getElementById('lillebillede'+i).style.display='inline';};this.style.display='none';document.getElementById('picdscrp').style.display='none';return false;" style="display:none;">til galleri</a>

-- men det ligner efterhånden noget som skal i en funktion ...
Avatar billede topperware Nybegynder
09. maj 2005 - 01:44 #11
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)?
Avatar billede roenving Novice
09. maj 2005 - 01:50 #12
Lange funktioner i events skal helst placeres i funktioner i javascript-blokke for ellers bliver de for svære at vedligeholde !-)
Avatar billede topperware Nybegynder
09. maj 2005 - 01:54 #13
Ok endnu engang tak for hjælpen
Hvad med point?
Avatar billede roenving Novice
09. maj 2005 - 02:00 #14
Velbekomme '-)
Avatar billede roenving Novice
09. maj 2005 - 04:17 #15
-- og tak for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester