Avatar billede ameq Nybegynder
16. maj 2006 - 11:50 Der er 13 kommentarer

Virker i IE men ikke i FF window.event.srcElement;

Hej
Jeg har det her script som virker fint i IE men ikke FF
Den laver fejl når den når ned til "var oSrc = window.event.srcElement;"

kode:
function ToggleUdvalgEllerMedlem(sIDType)
                {
                    var oSrc = window.event.srcElement;
                    var oDivBorder = oSrc.nextSibling;
                    var oIDs = document.getElementsByName(sIDType + oSrc.id);
                    var bBorder = false;


Hvordan får jeg lige det til at virke i FF?
Avatar billede roenving Novice
16. maj 2006 - 16:04 #1
For det første findes der ikke en property på window, der indeholder et event-objekt, i andet end IE og Opera, Gecko-browserne medsender eventet som en parameter på kaldet !-)

-- for det andet findes srcElement heller ikke, der skal man have fat i target ...

Så prøv f.eks.

function ToggleUdvalgEllerMedlem(sIDType,e){
  var oSrc = e?e.target:window.event.srcElement;
  var oDivBorder = oSrc.nextSibling;
  var oIDs = document.getElementsByName(sIDType + oSrc.id);
  var bBorder = false;
}
Avatar billede ameq Nybegynder
16. maj 2006 - 16:22 #2
kan du forklare hvad e?e.target: gør?
Avatar billede ameq Nybegynder
16. maj 2006 - 16:25 #3
jeg får stadig fejlen "window.event has no properties"
Avatar billede roenving Novice
16. maj 2006 - 16:25 #4
Det er det samme som at skrive:

var oSrc;
if(e)
  oSrc = e.target;
else
  oSrc = window.event.srcElement;

Konstruktionen hedder den ternære operator, og er altså en kort form for en if-sætning, nærmest som IIF f.eks. i Excel (HVIS i den danske udgave !-)

var val = betingelse ? "val hvis sand" : "val hvis falsk";
Avatar billede roenving Novice
16. maj 2006 - 16:27 #5
Henter du det ikke som resultat af en event ?-)
Avatar billede olebole Juniormester
16. maj 2006 - 16:40 #6
<ole>

Den hedder ikke den ternære operator - men operatoren er ternær, da der indgår tre led i den (jvnf. binær). Typen af operator kaldes 'komparativ' - så vi kunne kalde den 'den ternære, komparative operator', når den engang skal adles  ;o)

/mvh
</bole>
Avatar billede ameq Nybegynder
16. maj 2006 - 21:35 #7
he jeg kender den sådan set godt fra c#, jeg bruger den bare ikke så tidt =)

men hvad gøre vi?
Avatar billede olebole Juniormester
16. maj 2006 - 22:25 #8
Jamen, kan du ikke bruge roenvings forslag? I Gecko (Mozilla, Firfox, m.fl.) medsendes event-objektet som argument i event-handleren. Derfor:
    var oSrc = e?e.target:window.event.srcElement;

- eller:

var oSrc;
if (e) { // Det er en Gecko
  oSrc = e.target;
}
else { // Det er ikke en Gecko
  oSrc = window.event.srcElement;
}
Avatar billede ameq Nybegynder
17. maj 2006 - 09:19 #9
nej det virkede ikke
og hvis jeg sætters olebole eks. ind så får jeg stadig fejl i "oSrc = e.target;"

min metode ser sådan her ud "function ToggleUdvalgEllerMedlem(sIDType,e)"

men hvor kommer e fra? for jeg overfører ikke flere parm. i min metode
Avatar billede ameq Nybegynder
18. maj 2006 - 10:18 #10
Når jeg kører det her i min FF så kommer jeg ned i alert('2');
function DoStuff(e)
{
  if (e) { // Det er en Gecko
    alert('1');
  }
  else { // Det er ikke en Gecko
    alert('2');
  }
}
Avatar billede ameq Nybegynder
18. maj 2006 - 11:27 #11
Det virker den her vej rundt:
                    var oSrc;
                    if (navigator.appName == 'Microsoft Internet Explorer') { // Det er en Gecko
                      oSrc = window.event.srcElement;
                    }
                    else { // Det er ikke en Gecko
                      oSrc = ev.target;
                    }

kommer i lige med nolge svar som tak for hjælpen?
Avatar billede ameq Nybegynder
18. maj 2006 - 11:30 #12
Avatar billede ameq Nybegynder
23. maj 2006 - 09:04 #13
men et svar?
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