Avatar billede dan_n Nybegynder
07. juni 2004 - 20:09 Der er 33 kommentarer og
1 løsning

Hvorfor virker mit script ikke i Netscape og Firefox

Hey

Er der nogle som lige kan fortælle mig og evt give en løsning på hvorfor dette script ikke virker i hverken Firefox  eller Netscape

Firefox fejlmdd.
Error: document.getElementById.k66 has no properties
Source File: http://localhost/cms/page.asp?id=66

Jeg kaldet scriptet således
<body onload=""nodeID("&Request.QueryString("id")&");"">

-----------------------------------------
function nodeID(id) {
selOnColor = "#cccccc"
selOffColor = "#FFFFFF"

if (document.all && document.getElementById) {

if (document.all("node_id").value != "" ) {
eval("document.all['k" + document.all("node_id").value + "'].style.backgroundColor = selOffColor")
}
eval("document.all['k" + id + "'].style.backgroundColor = selOnColor")
eval("document.all['node_id'].value = id;")


} else if (!document.all && document.getElementById) {

if (document.getElementById("node_id").value != "" ) {
eval("document.getElementById['k" + document.getElementById("node_id").value + "'].style.backgroundColor = selOffColor")
}
eval("document.getElementById['k" + id + "'].style.backgroundColor = selOnColor")
        eval("document.getElementById['node_id'].value = id;")

} else {
return false;
}
}
-----------------------------------------
Avatar billede thesurfer Nybegynder
07. juni 2004 - 20:11 #1
Går ud fra at det er ASP kode.. så:
<body onload="nodeID('<%=Request.QueryString("id")%>');">
Avatar billede drinkit Praktikant
07. juni 2004 - 20:14 #2
sry, men, hvorfor går du ud fra at det er ASP ?
Avatar billede thesurfer Nybegynder
07. juni 2004 - 20:14 #3
2 ting:
1) "page.asp?id=66"
2) request.querystring er asp

:-)
Avatar billede thesurfer Nybegynder
07. juni 2004 - 20:14 #4
Det er html, javascript og asp :-)
Avatar billede thesurfer Nybegynder
07. juni 2004 - 20:16 #5
Request.Querysring fanger det ståer i urlen. Eksempel med "page.asp?id=66": request.querystring("id") fanger "66"..
Avatar billede thesurfer Nybegynder
07. juni 2004 - 20:18 #6
Ved "onload" skal funktioner "node" afvikles, med id'en fra urlen.. problemet er at dan_n har skrevet lidt forkert.. det skal stå som jeg har skrevet i mit første indlæg..
Avatar billede dan_n Nybegynder
07. juni 2004 - 20:18 #7
Yep
Avatar billede thesurfer Nybegynder
07. juni 2004 - 20:19 #8
dan_n> Smid selv et svar og snup pointsne selv ;-)
Avatar billede dan_n Nybegynder
07. juni 2004 - 20:19 #9
Men asp delene virker fint, det der javascriptet der er problemmet:
Virker heller ikke ved der blot stod:

onload=nodeID(10);
Avatar billede thesurfer Nybegynder
07. juni 2004 - 20:21 #10
Her er problemet vist: document.all && document.getElementById

BÅDE document.all OG document.getElementById skal understøttes..

Jeg mener at det kun er IE der understøtter document.all..  derfor: brug altid document.getElementById, som alle browsere vist nok understøtter..
Avatar billede dan_n Nybegynder
07. juni 2004 - 20:23 #11
har prøvet blot med:
function nodeID(id) {
selOnColor = "#cccccc"
selOffColor = "#FFFFFF"


if (document.getElementById("node_id").value != "" ) {
eval("document.getElementById['k" + document.getElementById("node_id").value + "'].style.backgroundColor = selOffColor")
}
eval("document.getElementById['k" + id + "'].style.backgroundColor = selOnColor")
eval("document.getElementById['node_id'].value = id;")
}

Men det er stadigvæk sammen problem.
Error: document.getElementById.k66 has no properties
Line: 25

Line 25: eval("document.getElementById['k" + id + "'].style.backgroundColor = selOnColor")
Avatar billede thesurfer Nybegynder
07. juni 2004 - 20:24 #12
Prøv:

eval("document.getElementById('k" + id + "').style.backgroundColor = selOnColor")
Avatar billede thesurfer Nybegynder
07. juni 2004 - 20:26 #13
Normalt hedder det jo: document.getElementById('k10')...
Avatar billede dan_n Nybegynder
07. juni 2004 - 20:29 #14
Skulle bare ændre alle [] til (), utrolig man kan se sig blind på en detalje.
Jeg takker, det er godt der er nogle der er vågne.

smid lige et svar så er points'ne dine
Avatar billede roenving Novice
07. juni 2004 - 20:29 #15
Hvad med bare:

function nodeID(id) {
selOnColor = "#cccccc"
selOffColor = "#FFFFFF"

if (document.getElementById) {
  if (document.getElementById("node_id").value != "" ) {
    document.getElementById('k' + document.getElementById).style.backgroundColor = selOffColor;
  }
  document.getElementById('k' + id).style.backgroundColor = selOnColor;
  document.getElementById['node_id'].value = id;
}else if(document.all){
  if (document.all("node_id").value != "" ) {
    document.all['k' + document.all("node_id").value].style.backgroundColor = selOffColor;
  }
  document.all['k' + id].style.backgroundColor = selOnColor;
  document.all['node_id'].value = id;
}
else return false;
}
}
Avatar billede thesurfer Nybegynder
07. juni 2004 - 20:31 #16
roenving> Er det overhovedet nødvendigt med document.all? Med andre ord: understøttes document.getElementById ikke af alle browsere?
Avatar billede thesurfer Nybegynder
07. juni 2004 - 20:31 #17
dan_n> Ingen points tak :-)
Avatar billede roenving Novice
07. juni 2004 - 20:32 #18
eval er den mest omkostningstunge enkelt-operation, man kan udføre i javascript ...

-- og det fuldt korrekte er at bruge () i .getElementById (det er en funktion !-) og [] i .all (det er et array !-)
Avatar billede roenving Novice
07. juni 2004 - 20:33 #19
>>strandløven

-- en del af det ovenstående vil faktisk virke uden problemer i IE4, som ikke kender .getElementById !-)
Avatar billede roenving Novice
07. juni 2004 - 20:34 #20
Øv, indtil flere fejl:

function nodeID(id) {
selOnColor = "#cccccc"
selOffColor = "#FFFFFF"

if (document.getElementById) {
  if (document.getElementById("node_id").value != "" ) {
    document.getElementById('k' + document.getElementById).style.backgroundColor = selOffColor;
  }
  document.getElementById('k' + id).style.backgroundColor = selOnColor;
  document.getElementById('node_id').value = id;
}else if(document.all){
  if (document.all["node_id"].value != "" ) {
    document.all['k' + document.all("node_id").value].style.backgroundColor = selOffColor;
  }
  document.all['k' + id].style.backgroundColor = selOnColor;
  document.all['node_id'].value = id;
}
else return false;
}
Avatar billede thesurfer Nybegynder
07. juni 2004 - 20:34 #21
Kender IE ikke .getElementById ??
Avatar billede drinkit Praktikant
07. juni 2004 - 20:35 #22
hey, sry.. bare mig der ik så efter :D Peace out!
Avatar billede thesurfer Nybegynder
07. juni 2004 - 20:36 #23
For at lukke spm'et, skal svaret accepteres :-)
Avatar billede roenving Novice
07. juni 2004 - 20:36 #24
Mon der findes specielle strandløve-læsebriller ?-)
Avatar billede thesurfer Nybegynder
07. juni 2004 - 20:37 #25
hahaha :-)
Avatar billede thesurfer Nybegynder
07. juni 2004 - 20:37 #26
hmm.. der står jo "IE4".. men hvad med IE5+ ? :-)
Avatar billede roenving Novice
07. juni 2004 - 20:44 #27
Nå, du opdagede ved nærmere granskning det ret afgørende 4-tal *lol*

-- og det er præcis med fremkomsten af IE5, at M$ anerkendte DOM-standarden, som de havde stemt hjem i W3C næsten 4 år før !-)

-- endda så meget, at den også blev implementeret på det punkt !o]
Avatar billede dan_n Nybegynder
07. juni 2004 - 20:45 #28
Fik det til at virke med dette script:
function nodeID(id) {
selOnColor = "#cccccc"
selOffColor = "#FFFFFF"

if (document.all ) {

if (document.all("node_id").value != "" ) {
document.all('k' + document.all("node_id").value ).style.backgroundColor = selOffColor
}
document.all('k' + id ).style.backgroundColor = selOnColor
document.all('node_id').value = id;


} else if (document.getElementById) {

if (document.getElementById("node_id").value != "" ) {
document.getElementById('k' + document.getElementById("node_id").value ).style.backgroundColor = selOffColor
}
document.getElementById('k' + id ).style.backgroundColor = selOnColor
        document.getElementById('node_id').value = id;

} else {
return false;
}
}
Avatar billede dan_n Nybegynder
07. juni 2004 - 20:46 #29
> roenving
Nu hvor thesurfer ikke vil have nogle points, kan du så ikke smide et svar
Avatar billede roenving Novice
07. juni 2004 - 20:47 #30
PS. Det andet 4-tal er ikke rigtigt, men bare et udtryk for en webkoders frustration over, at en afgørende spiller på browser-markedet kan finde på at kaste lort ud med den ene hånd, og med den anden hånd svinge en kæmpe vifte ...

Hvorefter lorten lander alle steder !-(
Avatar billede dan_n Nybegynder
07. juni 2004 - 20:51 #31
haha, den fortolkning havde jeg nu aldrig hørt før
Avatar billede roenving Novice
07. juni 2004 - 21:04 #32
Og en korrekt udgave af scriptet vil være (ved faktisk ikke om Opera accepterer den forkerte .all-notation !-)

function nodeID(id) {
selOnColor = "#cccccc"
selOffColor = "#FFFFFF"

if (document.all ) {
  if (document.all["node_id"].value != "" ) {
    document.all['k' + document.all["node_id"].value].style.backgroundColor = selOffColor
  }
  document.all['k' + id].style.backgroundColor = selOnColor
  document.all['node_id'].value = id;
} else if (document.getElementById) {
  if (document.getElementById("node_id").value != "" ) {
    document.getElementById('k' + document.getElementById("node_id").value).style.backgroundColor = selOffColor
  }
  document.getElementById('k' + id ).style.backgroundColor = selOnColor
  document.getElementById('node_id').value = id;
} else
  return false;
}

-- lavede lige for god ordens skyl nogle indrykninger også !o]

-- og velbekomme '-)
Avatar billede dan_n Nybegynder
07. juni 2004 - 21:18 #33
Jeg takker.
Scriptet virker efter hensigten i opera, det er kun *.style.backgroundColor som ikke viker men opera og css er vist heller ikke det bedste mix
Avatar billede roenving Novice
07. juni 2004 - 21:26 #34
Jeg takker 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