Avatar billede jap76 Nybegynder
24. marts 2003 - 16:21 Der er 7 kommentarer og
1 løsning

Rammer på tværs af vinduer

På en side skal et link åbne et popup-vindue, med en side, der indeholder rammer. Dernæst skal scriptet bestemme hvilken html-side der skal indlæses i en specifik ramme.

Jeg er nået så langt:

<script language="JAVASCRIPT">
<!-- skjuler for ældre browsere
function fotoVindue() {
fotoSide = window.open('fotoramme.htm','nytVin')
vaelgSide()
}
function vaelgSide() {

*** Her kommer problemet ***

fotoSide.location.href="testside.htm"

Hvor skal jeg angive navnet (foto) på rammen i popup-vinduet ?
Avatar billede Slettet bruger
24. marts 2003 - 17:30 #1
Er ikke helt sikker på, hvad du mener, men prøv:

function vaelgSide() {
  fotoSide.frames["foto"].location.href = "testside.htm";
}
Avatar billede jap76 Nybegynder
24. marts 2003 - 17:42 #2
Det virker ikke...
IE skriver følgende fejl: 'fotoSide.frames.foto.location' er null eller ikke et objekt.

I koden står der godt nok 'frames["foto"]', men IE oversætter det åbenbart.

Det jeg vil have er en funktion, hvor man kan ændre indholdet af en bestemt frame der befinder sig i et andet vindue, der tidligere er blevet åbnet.
Når det virker skal det være med variable osv...
Avatar billede olebole Juniormester
24. marts 2003 - 18:05 #3
<ole>

var fotoside; // Erklær variablen, så den kan læses af andre funktioner
function fotoVindue() {
  fotoSide = window.open('fotoramme.htm','nytVin')
  vaelgSide();
}

function vaelgSide() {
  fotoSide.foto.location.href = "testside.htm";
}

/mvh
</bole>
Avatar billede jap76 Nybegynder
24. marts 2003 - 18:17 #4
Virker desværre heller ikke.

Den skriver stadig 'fotoSide.foto.location' er null eller ikke et objekt.

Jeg kan sagtens få det til at virke uden at erklære variablen, hvis jeg vil ændrer hele det andet vindues indhold.
Men kun at ændre indholdet i en frame kan jeg ikke få til at virke...
Avatar billede jap76 Nybegynder
24. marts 2003 - 18:26 #5
Ups, jeg var vist lige hurtig...

Det virker nu, med erklæring af variable.

Tak for svaret  ! :-)
Avatar billede olebole Juniormester
25. marts 2003 - 00:11 #6
... anytime  ;o)

Lige en forklaring:

<html>
<body>

<script type="text/JavaScript">
var bla = "noget";
function sigDet() {
    alert(bla);
}
function sigDetAndet() {
    var bla = "noget andet";
    alert(bla);
}
function sigDetTredie() {
    bla = "noget tredie";
    alert(bla);
}
</script>

<button onclick="sigDet();">Test sigDet()</button><br>
<button onclick="sigDetAndet()">Test sigDetAndet()</button><br>
<button onclick="sigDetTredie()">Test sigDetTredie()</button>

</body>
</html>

Her erklæres variablen 'bla' globalt - og kan derfor læses af alle funktioner.

I funktionen 'sigDetAndet()' erklæres en variabel med samme navn lokalt. Den kan kun læses inde i denne ene funktion.

I funktionen 'sigDetTredie()' sættes den globale variabel (bla) til en ny værdi. Check efterfølgende de to andre funktioner og se, det _kun_ er den globalt erklærede 'bla', der er blevet ændret.
/mvh
Avatar billede olebole Juniormester
25. marts 2003 - 00:15 #7
PS: Lad endelig ikke dette være en opfordring til at bruge samme navn til både lokale og globale variabler. Det kan i princippet lade sig gøre, men det er dårlig kodeskik, da man hurtig kommer til at rode rundt i en slem gang kode-grød.

Det var _kun_ ment som et illustrativt eksempel  :)
/mvh
Avatar billede jap76 Nybegynder
25. marts 2003 - 09:00 #8
Tak skal du have for forklaringen, det er dejligt at der er nogen der gider.
Jeg har set noget spaghetti-programmering med samme variabelnavne globalt og lokalt, og det er ikke til at hitte rede i!

Desværre virkede det script jeg ville lave ikke helt som forventet, idet det ca. hvert 5. gang man klikkede på linket ikke virkede. Jeg tror umiddelbbart, at den ikke fik nået at åbne et vindue hurtigt nok, og derfor kendte den ikke framenavnet i det øjeblik det blev udført.

Så i stedet har jeg løst problemet ved at overføre variablen fra det ene vindue til det andet og lade skiftet i frameindhold ske fra det åbnede vindue. En lidt besværlig omvej, men det virker!! :-)
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