Avatar billede chiron Nybegynder
11. oktober 2001 - 12:17 Der er 8 kommentarer

Jeg har et problem med min mouseover-generator

Mit spørgsmål er hvordan kan jeg få gentaget layernr[x] koden således at jeg ikke skal skrive koden x antal gange hvor jeg skal bruge den(nogle gange bliver det til mange gange). Jeg har prøvet med en for løkke...se kode eksempel 2, men den giver fejlen at x ikke defineret.

Kode 1
<script>
var layernr=new Array();
function layer(kode) {
this.kode=kode; }
layernr[1]=new layer(\'<% var con = Server.CreateObject(\'ADODB.Connection\');
                            con.Open(\"PROVIDER=MICROSOFT.JET.OLEDB.4.0; DATA SOURCE=\"+Server.MapPath(\"x.mdb\")+\";\");
                            var rs = con.Execute(\"SELECT html FROM mouse WHERE Id =1\");
                                if(!rs.BOF&&!rs.EOF){
                                    Response.Write(rs(\'html\'));
                                    }
                            con.Close()
                            delete con;%>\')
                           
layernr[2]=new layer(\'<% var con = Server.CreateObject(\'ADODB.Connection\');
                            con.Open(\"PROVIDER=MICROSOFT.JET.OLEDB.4.0; DATA SOURCE=\"+Server.MapPath(\"x.mdb\")+\";\");
                            var rs = con.Execute(\"SELECT html FROM mouse WHERE Id =2\");
                            if(!rs.BOF&&!rs.EOF){
                                Response.Write(rs(\'html\'));
                                }
                            con.Close()
                            delete con;%>\')


function aaben(x) {
if (navigator.appName==\"Netscape\") {
with(layernr[x]) {
document.layers[\'layerNC\'].document.writeln(kode);
document.layers[\'layerNC\'].document.close();}
document.layers[\'layerNC\'].visibility=\"show\"; }
if (navigator.appName==\"Microsoft Internet Explorer\") {
with(layernr[x]) {
layerIE.innerHTML=kode;}
layerIE.style.visibility=\"visible\"; } }

function luk(x) {
if (navigator.appName==\"Netscape\") {
document.layers[\'layerNC\'].visibility=\"hide\"; }
if (navigator.appName==\"Microsoft Internet Explorer\") {
layerIE.style.visibility=\"hidden\"; } }
</script>

kode 2
<script>

var layernr=new Array();
function layer(kode) {
this.kode=kode; }

for (x=1;x<20;x=x+1){
layernr[x]=new layer(\'<% var con = Server.CreateObject(\'ADODB.Connection\');
                            con.Open(\"PROVIDER=MICROSOFT.JET.OLEDB.4.0; DATA SOURCE=\"+Server.MapPath(\"x.mdb\")+\";\");
                            var rs = con.Execute(\"SELECT html FROM mouse WHERE Id = \"+x+\";\");
                                if(!rs.BOF&&!rs.EOF){
                                    Response.Write(rs(\'html\'));
                                    }
                            con.Close()
                            delete con;%>\')
                            }

function aaben(x) {
if (navigator.appName==\"Netscape\") {
with(layernr[x]) {
document.layers[\'layerNC\'].document.writeln(kode);
document.layers[\'layerNC\'].document.close();}
document.layers[\'layerNC\'].visibility=\"show\"; }
if (navigator.appName==\"Microsoft Internet Explorer\") {
with(layernr[x]) {
layerIE.innerHTML=kode;}
layerIE.style.visibility=\"visible\"; } }

function luk(x) {
if (navigator.appName==\"Netscape\") {
document.layers[\'layerNC\'].visibility=\"hide\"; }
if (navigator.appName==\"Microsoft Internet Explorer\") {
layerIE.style.visibility=\"hidden\"; } }
</script>
Avatar billede jakoba Nybegynder
11. oktober 2001 - 12:50 #1
Det er da vist udelukkende et spørgsmål om ASP

Såvidt jeg kan gennemskue din kode er x nogengange et tal og nogengange et objekt. det kan vist ikke være meningen.

mvh JakobA
Avatar billede jakoba Nybegynder
11. oktober 2001 - 12:54 #2
skulle der evt stå:

con.Open(\"PROVIDER=MICROSOFT.JET.OLEDB.4.0; DATA SOURCE=\"+Server.MapPath(\"layernr[1].mdb\")+\";\");

i layernr[1]
og

con.Open(\"PROVIDER=MICROSOFT.JET.OLEDB.4.0; DATA SOURCE=\"+Server.MapPath(\"layernr[2].mdb\")+\";\");

i layernr[2] ?
Avatar billede chiron Nybegynder
12. oktober 2001 - 21:59 #3
Til jakoba

Jeg er ikke sikker på at du har forstået spørgsmålet korrekt.... Jeg har ikke problemer med databasen

x.mdb er bare navnet på databasen, problemet ligger i en reperering af layernr[tal]-koden
så jeg ikke skal gentage den, et eller andet antal gange.
Avatar billede jakoba Nybegynder
12. oktober 2001 - 22:11 #4
Ok. Jo det kan du godt. men du kan IKKE gøre det med en javascript løkke. du må bruge en ASP løkke.

ASP virker på serveren. det kan bestemme hvad der skal stå i den fil der sendes til klienten (brugeren).

når klienten så har nodtaget den fil kan ASP overhovedet ikke bruges mere. der står det der står. derefter kommer så javascript og kan påvirke hvad der bliver vist af det der står. men du kan ikke bruge javascript til at påvirke hvordan din asp skal generere filen.

mvh JakobA
Avatar billede chiron Nybegynder
12. oktober 2001 - 22:32 #5
Nu har jeg pillet forbindelsen ud af layernr[], se del-kode 3

Del-kode 3
<%var con = Server.CreateObject(\'ADODB.Connection\');
con.Open(\"PROVIDER=MICROSOFT.JET.OLEDB.4.0; DATA SOURCE=\"+Server.MapPath(\"hri.mdb\")+\";\");
%>
layernr[1]=new layer(\'<% var rs = con.Execute(\"SELECT html FROM mouse WHERE Id =1\");
                                if(!rs.BOF&&!rs.EOF){
                                    Response.Write(rs(\'html\'));
                                    }%>\')

layernr[2]=new layer(\'<% var rs = con.Execute(\"SELECT html FROM mouse WHERE Id =2\");
                            if(!rs.BOF&&!rs.EOF){
                                Response.Write(rs(\'html\'));
                                }%>\')
<%
con.Close()
delete con;
%>

Men hvis du siger jeg skal lave løkken i ASP, har du så et forslag?   
Avatar billede jakoba Nybegynder
12. oktober 2001 - 22:55 #6
noget i retning af:

<%
  for count = 1 to 20
%>
layernr[<% =count %>]=new layer(\'<% var rs = con.Execute(\"SELECT html FROM mouse WHERE Id = \" & count );
                                if(!rs.BOF&&!rs.EOF){
                                    Response.Write(rs(\'html\'));
                                    }%>\')
<%
next
%>

men det er mest gætteri. Jeg er som sagt ikke vældig god til asp.

mvh JakobA
Avatar billede chiron Nybegynder
12. oktober 2001 - 23:05 #7
Jeg prøver i weekenden om det virker! og vender tilbage. Tak
Avatar billede chiron Nybegynder
24. oktober 2001 - 23:29 #8
Undskyld det tog lidt tid....men arbejdet tog overhånd.

Jeg prøvede men det virkede ikke, da scriptet er et javascript, kan jeg ikke gå over i ASP.

For at det skulle virke skal det hele være i asp....og det dutter ikke, sorry

Well scriptet virker som det er, jeg ville jo bare forenkle det....men det lader sig nok ikke umiddelbart gøre?
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