Avatar billede webnoob Nybegynder
06. februar 2006 - 22:14 Der er 20 kommentarer og
1 løsning

onMouseover script i asp-script

Jeg har et Java-script som virker i en ren html fil, men jeg har nu i lang tid prøvet at flette scriptet ind i en asp-fil uden at det er lykkes for mig.

scriptet ser sådan her ud:

        <div id="t.t.testersen.jpg" style="width:245;height:160;" onmouseover="this.innerHTML='Test Tester Testersen<br>Testervej 123<br>4567 testby<br><br>tlf.: 89 01 23 45<br>mobil : 67 89 01 23<br>E-mail : test@testmail.test'" onmouseout="this.innerHTML='<img src=billeder/jpg/testersen.jpg style=width:153;height:122; alt=T.T.Testersen><br>Test Tester Testersen'" align="center"><img src="billeder/jpg/tester.jpg" style="width:153;height:122;" alt="T.T.Testersen"><br>Test Tester Testersen</div>

min asp fil som bruges i en adresseliste på min hjemmeside ser sådan her ud:

<%
strSQL = "SELECT * FROM adresse WHERE kompagni LIKE '%"&request.querystring("kom")&"%' AND deling LIKE '%"&request.querystring("del")&"%' ORDER BY Fornavn ASC"
Set record = rs.Execute(strSQL)

counter = 0

Do While Not record.EOF
    If counter Mod 3 = 0 Then
        If counter <> 0 Then Response.Write "</tr>"
        Response.Write "<tr>"
    End If
   
    strNavn = record("fornavn") & " " & record("mellemnavn") & " " & record("efternavn")

    strLink = "<a href=person.asp?id=" & record("Id") & ">" & strNavn & "</a>"

    Select Case record("gruppe")
        Case "1. gruppe" : bgColor = "red"
        Case "2. gruppe" : bgColor = "white"
        Case "3. gruppe" : bgColor = "blue"
        Case Else : bgColor = "#CDC4C4"
    End Select

Response.Write "<td width='33%' align='center' style='background-color: " & bgColor & "'>" & strLink & "</td>"

    counter = counter + 1

    record.MoveNext
Loop

Do While counter Mod 3 <> 0
    Response.Write "<td>&nbsp;</td>"
    counter = counter + 1
Loop
%>

Det som skal ske er. Der vil blive vist et billede med navn på brugeren lige under billedet og når man køre musen henover billedet skal brugerens adresse komme frem.

Brugerne kan upload deres eget billede og få det vist. måden jeg henter billederne på ser sådan her ud:

                        <%
                        dim fs
                        path = Server.MapPath("billeder/adresseliste/"& session("brugerid"))
                       
                        set fs=Server.CreateObject("Scripting.FileSystemObject")
                        if fs.FileExists(path & ".gif")=true then
                          response.write "<img src='billeder/adresseliste/"& session("brugerid") &".gif' width='150' height='113'>"
                        elseif fs.FileExists(path &  ".jpg")=true then
                          response.write "<img src='billeder/adresseliste/"& session("brugerid") &".jpg' width='150' height='113'>"
                        else
                          Response.write "<img src='billeder/adresseliste/fotografen_er_på_vej.gif' width='150' height='113'>"
                        end if
                        set fs=nothing
                        %>

Håber der er en der kan hjælpe mig.
Avatar billede ldanielsen Nybegynder
08. februar 2006 - 13:30 #1
Noget i den stil?

<%
dim fs, strImageUrl
path = Server.MapPath("billeder/adresseliste/"& session("brugerid"))
                       
set fs=Server.CreateObject("Scripting.FileSystemObject")
if fs.FileExists(path & ".gif")=true then
  strImageUrl = "billeder/adresseliste/" & session("brugerid") & ".gif"
elseif fs.FileExists(path &  ".jpg") = true then
  strImageUrl = "billeder/adresseliste/" & session("brugerid") & ".jpg"
else
  strImageUrl = "billeder/adresseliste/fotografen_er_på_vej.gif"
end if

response.write ("<img src=""" & strImageUrl & """ width=""150"" height=""113"" onMouseOver=""document.getElementById['IdForDetElementDuVilBruge'].style.display = 'block';"" onMouseOut=""document.getElementById['AdresseDiv_" & record("Id") & "'].style.display = 'none';"">")

Set fs=nothing
%>

Min tanke er at du skriver navnet i en div eller lignende, og giver den style="display: none;". Så vil den blive vist når man kører over billedet, idet display sættes til block.

Hvis der er flere billeder på siden giver du så de forskellige id med brugerID'et i:

Response.write ("<div id=""AdresseDiv_" & record("Id") & """>" & strNavn & "</div>")

Så skal du bare kalde mouseover sådan:

response.write ("<img src=""" & strImageUrl & """ width=""150"" height=""113"" onMouseOver=""document.getElementById['AdresseDiv_" & record("Id") & "'].style.display = 'block';"" onMouseOut=""document.getElementById['AdresseDiv_" & record("Id") & "'].style.display = 'none';"" >")
Avatar billede webnoob Nybegynder
08. februar 2006 - 20:18 #2
Idanielsen jeg tror ikke du har forstået hvad det er jeg mener eller måske har jeg udladt en vigtig info, på siden hvor adresserne viser er der en tabel. Tabellen er bygget op af tre kolonner i hver række. Hvis du er forviret kan det måske hjælpe dig at du kigger i fil igennem og vil du det kan du få adgang via min ftp til min hjemmeside.
Avatar billede ldanielsen Nybegynder
08. februar 2006 - 21:38 #3
Måske hjælper det hvis du ser sådan på det:

Du vil, lyder det til, godt kunne finde ud af at lave det du ønsker, i ren HTML. Men da det skal laves udfra en database, skal du få serveren, dvs. asp'en til at skrive det html der skal til.

Hvis der er flere personer på hver side, skal du nok tænke på at bruge id'et for hver person til at styre det med. Du kunne f.eks. lave et antal javascript vriabler, der indeholder navnene:

<%

Do While Not record.EOF
       
    strNavn = record("fornavn") & " " & record("mellemnavn") & " " & record("efternavn")
    Response.Write("<script language=""javascript"">" & _
        "var Navn" & record("Id") & " = """ & strNavn & """" & _
        "</script>")
   
    record.MoveNext
Loop

%>

Dette skal naturligvis flettes sammen med det loop du har i forvejen.

Kan du ikke poste koden som du har nu, så kan jeg bedre se hvad du vil. Det kode som du har postet nu er, så vidt jeg forstår, uddrag af to forskellige sider, som ikke er den endelige side som du ønsker at lave.

Jeg vil foretrække at det foregår her i forum'et, dette er i øvrigt også ekspertens holdning. Så er der større chance for at det vi finder ud af kan komme andre til gode.
Avatar billede webnoob Nybegynder
08. februar 2006 - 22:07 #4
Lige pt, fungere det en den måde at, man klikker sig ind på adresselisten og der er der en tabel, med tre kolonner i hver række. Klikker man på et navn bliver man sendt videre til en anden side og der vil man så kunne se alle relavante oplysninger.

Som jeg gerne vil have det skal være. Man klikker sig ind på adresselisten der er en table med tre kolonner i hver række, i hver celle skal der være et billede med et navn under. Køre man musen henover billedet skal alle relavante oplysninger komme frem.

At du hoppede på min ftp og lige kiggede min fil igennem ville ikke betyde noget, skulle vi finde ud af noget vil jeg selvføgelig poste det her, netop så andre brugere kan følge med i udviklingen. Men fred være med at du ikke har lyst til det. :o)
Avatar billede ldanielsen Nybegynder
09. februar 2006 - 09:03 #5
Alle relevante oplysninger må så være adressen, ikke?

Hvor skal den komme frem, under navnet?
Avatar billede webnoob Nybegynder
09. februar 2006 - 15:07 #6
relavante oplysninger er: Navn, adresse, mail adresse, mobil nr. og telefon nr.

når man køre musen hen over billedet skal disse oplysninger komme frem og når man køre musen væk skal billede selvfølgelig komme tilbage.

hvis du sætter det her ind i en ren html fil så vil du kunne se hvordan det skal være:

<html>
<head>
<title></title>
</head>

<body>
<table>
<tr>
<td>
<div id="t.t.testersen.jpg" style="width:245;height:160;" onmouseover="this.innerHTML='Test Tester Testersen<br>Testervej 123<br>4567 testby<br><br>tlf.: 89 01 23 45<br>mobil : 67 89 01 23<br>E-mail : test@testmail.test'" onmouseout="this.innerHTML='<img src=billeder/jpg/testersen.jpg style=width:153;height:122; alt=T.T.Testersen><br>Test Tester Testersen'" align="center"><img src="billeder/jpg/tester.jpg" style="width:153;height:122;" alt="T.T.Testersen"><br>Test Tester Testersen</div>
</td>
</tr>
</table>
</body>
</html>
Avatar billede ldanielsen Nybegynder
09. februar 2006 - 22:28 #7
OK så. jeg garanterer ikke noget, men håber at du kan se hvad det er jeg gør. Jeg ved ikke hvad adressefelterne hedder i databasen, så der har jeg gættet.

<html>
<head>
<title></title>
</head>

<body>
<table>
<%
Dim Counter, strNavn, fs, path

set fs=Server.CreateObject("Scripting.FileSystemObject")

'Åbn record her


Counter = 0

Do While Not record.EOF
  strNavn = record("fornavn") & " " & record("mellemnavn") & " " & record("efternavn")
  path = Server.MapPath("billeder/adresseliste/"& record("id"))
  if fs.FileExists(path & ".gif") = true then
      strImageUrl = "billeder/adresseliste/" & session("brugerid") & ".gif"
  elseif fs.FileExists(path &  ".jpg") = true then
      strImageUrl = "billeder/adresseliste/" & session("brugerid") & ".jpg"
  else
      strImageUrl = "billeder/adresseliste/fotografen_er_på_vej.gif"
  end if

response.write ("<img src=""" & strImageUrl & """ width=""150"" height=""113"" onMouseOver=""document.getElementById['IdForDetElementDuVilBruge'].style.display = 'block';"" onMouseOut=""document.getElementById['AdresseDiv_" & record("Id") & "'].style.display = 'none';"">")



  if Counter Mod 3 = 0 then Response.Write("<tr>")
%>

<td>
<div id="person<%=record("id")%>" style="width:245;height:160;" onmouseover="this.innerHTML='<%=strNavn & "<br>" & record("adresse") & "<br>" & record("postnr") & " " & record("bynavn") & "<br><br>tlf.: " & record("telefon") & "<br>mobil: " & record("mobil") & "<br>E-mail: " & record("email")%>';" onmouseout="this.innerHTML='<img src=\'<%=strImageUrl%>\' style=\'width:153;height:122;\' alt=\'<%=strNavn%>\' align=\'center\'><br>Test Tester Testersen';"></div>
</td>
<%
  Counter = Counter + 1
  if Counter Mod 3 = 0 then Response.Write("</tr>")
  record.MoveNext
loop

Set fs = nothing
Set record = nothing

%>
</table>
</body>
</html>
Avatar billede webnoob Nybegynder
09. februar 2006 - 23:11 #8
har lige prøvet at sætte det ind i en fil og har skrevet min record ind, men det virker ikke. Hvorfor har du skrevet strnavn i DIM??? navnet skal jo også hentes fra databasen.
Avatar billede webnoob Nybegynder
09. februar 2006 - 23:13 #9
ok, glem det med strNavn.
Avatar billede webnoob Nybegynder
09. februar 2006 - 23:19 #10
ok kan vi prøve på en anden måde???
Kan vi prøve at tage min nuværende fil og få skrevet billledet ud og så bagefter flette scriptet ind?
Avatar billede ldanielsen Nybegynder
10. februar 2006 - 08:58 #11
Hvilken fejl får du?
Avatar billede webnoob Nybegynder
10. februar 2006 - 15:25 #12
nu er jeg på arbejde så jeg kan ikke lige se fejlen, men det er flere tegn der mangler når jeg sætter min record ind.

altså:

strSQL = "SELECT * FROM adresse WHERE kompagni LIKE '%"&request.querystring("kom")&"%' AND deling LIKE '%"&request.querystring("del")&"%' ORDER BY Fornavn ASC"
Set record = rs.Execute(strSQL).
Avatar billede webnoob Nybegynder
10. februar 2006 - 17:22 #13
ok, nu har jeg lige pillet lidt og sat queryen ind og jeg får så følgende fejl:

Billedet bliver sat "ind" uden for tabellen

og så får jeg også denne her fejl:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/komdel.asp, line 41

linje 41: <div id="person<%=record("id")%>" style="width:245;height:160;" onmouseover="this.innerHTML='<%=strNavn & "<br>" & record("adresse") & "<br>" & record("postnr") & " " & record("bynavn") & "<br><br>tlf.: " & record("telefon") & "<br>mobil: " & record("mobil") & "<br>E-mail: " & record("email")%>';" onmouseout="this.innerHTML='<img src=\'<%=strImageUrl%>\' style=\'width:153;height:122;\' alt=\'<%=strNavn%>\' align=\'center\'><br>Test Tester Testersen';"></div>
Avatar billede webnoob Nybegynder
10. februar 2006 - 23:08 #14
nu har jeg kigget lidt nærmere på det og jeg kan ikke helt forstå hvad det er du mener jeg skal gøre i denne her linje:

response.write ("<img src=""" & strImageUrl & """ width=""150"" height=""113"" onMouseOver=""document.getElementById['IDFORDETELEMENTDUVILBRUGE'].style.display = 'block';"" onMouseOut=""document.getElementById['AdresseDiv_" & record("Id") & "'].style.display = 'none';"">")

????????????????????????
Avatar billede ldanielsen Nybegynder
13. februar 2006 - 09:52 #15
Som sagt:  Jeg ved ikke hvad adressefelterne hedder i databasen, så der har jeg gættet.

Item cannot be found in the collection corresponding to the requested name or ordinal. - betyder at du har skrevet fx. Response.Write(record("saftevand")) og der ikke er et felt i din SQL der heder "saftevand"

Jeg anvender felterne id, adresse, postnr, bynavn, telefon, mobil og email, så der må være et af de felter som ikke findes under det navn.

Omtalte linie skulle gerne resultere i noge der ligner:

<img src="/images/billede.jpg" width="150" height="113" onMouseOver="document.getElementById['IDFORDETELEMENTDUVILBRUGE'].style.display = 'block';" onMouseOut="document.getElementById['AdresseDiv_345'].style.display = 'none';">

Altså et billede med mouseover/out der viser/skjuler en div, som det så var meningen skulle indeholde adressen. jeg kan se at jeg ikke har tænkt det igennem, for id skulle have været 'AdresseDiv_345' i begge tilfælde (345 er blot et eksempel, det skal jo være id'et for den person du "har fat i" på pågældende tidspunkt.)
Avatar billede webnoob Nybegynder
13. februar 2006 - 22:04 #16
ok, jeg mente jeg havde fået rettet til de rigtige "navne", men det havde jeg ikke alle steder. Det har jeg så nu og nu kommer der da også billeder og oplysninger.

MEN!!!!! Når man klikker sig ind på en adressegruppe, hvor der fx. er 5 brugere, så er der 5 billeder oven over tabellen, alle under hinanden, og der er ikke nogen billeder i <td>'erne, køre man musen hen over så kommer oplysningerne og fjerne man musen igen SÅ kommer billedet.

Kan du følge mig?
Avatar billede webnoob Nybegynder
13. februar 2006 - 22:11 #17
Og, bare en lille ting, men hverken billede eller oplysninger er centreret i <td>'erne.
Avatar billede webnoob Nybegynder
13. februar 2006 - 22:58 #18
ok nu har jeg så igen pillet lidt ved det og har fået rettet to ting.

For det første havde du glemt noget i den <div> der skal vise billedet og oplysningerne.

Din:
<div id="person<%=record("id")%>" style="width:245;height:160;" onmouseover="this.innerHTML='<%=strNavn & "<br>" & record("adresse") & "<br>" & record("postnr") & " " & record("bynavn") & "<br><br>tlf.: " & record("telefon") & "<br>mobil: " & record("mobil") & "<br>E-mail: " & record("email")%>';" onmouseout="this.innerHTML='<img src=\'<%=strImageUrl%>\' style=\'width:153;height:122;\' alt=\'<%=strNavn%>\' align=\'center\'><br>Test Tester Testersen';"></div>

Min:
<div id="person<%=record("id")%>" style="width:245;height:160;" onmouseover="this.innerHTML='<%=strNavn & "<br>" & record("adresse") & "<br>" & record("postnummer") & " " & record("byen") & "<br><br>tlf.: " & record("telefon") & "<br>mobil: " & record("mobil") & "<br>E-mail: " & record("email")%>';" onmouseout="this.innerHTML='{<img src=<%=strImageUrl%> style=width:153;height:122;><br><%=strNavn%>';" align=center><img src=<%=strImageUrl%> style=width:153;height:122;><br><%=strNavn%>';">}</div>

det der er inden i en tuborg {} er hvad jeg har rettet.

Så nu er der et billede i alle <td>'erne når siden loader, får og efter musen har været over <td>'erne, plus at det hele er centreret.

Og alt imens jeg sidder og skriver kommer jeg til at tænke på, at dene eneste grup til at der er billeder udenfor tabellen er at du jo har lavet en response.write {response.write ("<img src=""" & strImageUrl & """ width=""150"" height=""113"" onMouseOver=""document.getElementById['IdForDetElementDuVilBruge'].style.display = 'block';"" onMouseOut=""document.getElementById['AdresseDiv_" & record("Id") & "'].style.display = 'none';"">")}, den prøvede jeg at udkommentere og ganske rigtige så er der nu ikke nogen billede andre steder end i tabellen.

Så lige nu vil jeg faktisk mede at du har fået løst mit problem for mig.

dog har jeg lige et spørgsmål, som dog falder lidt uden for mit oprindelige spørgsmål, men hvordan for jeg lavet emailen til et link?
Avatar billede webnoob Nybegynder
13. februar 2006 - 23:07 #19
kommer skoda lige til at se at min case med baggrundsfarver ikke er kommet med, kan du ikke lige få mast den ind?

Select Case record("gruppe")
        Case "1. gruppe" : bgColor = "red"
        Case "2. gruppe" : bgColor = "white"
        Case "3. gruppe" : bgColor = "blue"
        Case Else : bgColor = "#CDC4C4"
    End Select
Avatar billede ldanielsen Nybegynder
14. februar 2006 - 09:12 #20
Ved du hvad, det lyder alt sammen meget spændende, men jeg kan jo ikke se det. Er der ikke en adresse hvor man kan følge med?

Når jeg ser på det oprindelige spørgemål, handlede det om at flette noget javascript sammen med asp'en, ikke? Har du fået hold på det, eller hvad? For at bevare sammenhængen og anvendeligheden af dette forum, bør du oprette nye spørgsmål når du får nye problemer, evt. med mindre pointtal end de 100 du har udlovet her.

Men jeg lægger også mærke til at du løser mange af tingene selv, omtrent en halv time efter at du har rejst problemet ... :o)

Hvis du viser mig din kode, og giver mig adressen, så vil jeg gerne runde af med at vurdere den måde du har løst det på.
Avatar billede webnoob Nybegynder
14. februar 2006 - 17:23 #21
adressen kan du skam godt få, den hedder http://webtest.thomas-myg-hansen.dk, hvor du bare skal logge ind med bruger: tester og koden test. derfra går du bare ind under adresseliste klikker på et vilkårlig link.
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
Kurser inden for grundlæggende programmering

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