Avatar billede jenslund Juniormester
25. november 2004 - 12:36 Der er 20 kommentarer

overfør varialbel

Hej

Jeg har følgende lille ting jeg har copy-pastet sammen fra et par andre spørgsmål her på eksperten. Ideen med scriptet er at man ved at trykke på et link får en markeringsangivelse på et kort. Trykker man derefter på et andet får man en anden markering.

Som sådan virker scriptet MEN - nå jeg skal udvide det til at omfatte X antal positioner på kortet får jeg et problem. Findes der en snedig løsning på hvor dan jeg får fjernet det 'gamle' markering når jeg vælger den nye.

Desuden skal kortet kunne udskrives fra et seperat vindue - således skal variablen lagX med over i en print popupvindue.

Det er hele to ting - jeg håber nogen jan hjælpe.

Her lidt kode:

<html>

<head>

<title>Untitled</title>

<script language="javascript">

    ns4 = (document.layers)? true:false
    ie4 = (document.all)? true:false
    ie5 =(document.getElementById)? true:false
    ns6 = (document.getElementById && !document.all)?true:false;

    function over(id){
        var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style; styleObj.visibility = "visible";
    }
        function ud(id){
        var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style; styleObj.visibility = "hidden";
    }

</script>
</head>

<body>

<img src="0001.jpg"><br>

<a href="#" onMousedown="over('lag1');ud('lag2');">kuk</a><br>
<a href="#" onMousedown="over('lag2');ud('lag1');">kuk</a><br>

<div id="lag1" name="lag1" style="position: absolute; left:50; top:50; width: 200; height:100; z-index: 3; visibility: hidden"><font size="+8" color="red">&bull;</font></div>

<div id="lag2" name="lag2" style="position: absolute; left:50; top:100; width: 200; height:100; z-index: 3; visibility: hidden"><font size="+8" color="red">&bull;</font></div>

</body>

</html>

vh
Jens
Avatar billede tommy_carstensen Nybegynder
25. november 2004 - 14:12 #1
Abonnér
Avatar billede jenslund Juniormester
25. november 2004 - 14:28 #2
Er så gjort ;-)
Avatar billede olebole Juniormester
25. november 2004 - 14:37 #3
<ole>

Du kan jo i begyndelsen sætte en variabel til false (aktivtLag = false;). Når du så viser et lag, sætter du 'aktivtLag' lig med dette lag.

Lige før et lag vises, spørger du, om 'aktivtLag' er sat til noget - og skjuler det, hvis den er:
  if (ativtLag) // Skjul 'aktivtLag'

Spørgsmålet om popup-vindue forstår jeg ikke  :)

/mvh
</bole>
Avatar billede jenslund Juniormester
25. november 2004 - 15:08 #4
Popup-vinduet er en klassisk: En knap siger 'Udskriv kort' - udskriftsvinduet åbner og Udskriftsstyringen oven på, sådan at det kort jeg har lavet på hovedsiden ved at vælge en af linksne (altså kortet(det grønne felt er bare til test) og den røde markering) kommer op i udskriftsvinduet(det jeg kalder popupen - muligvis forkert valg af ord). Altså skal den variabel (fx 'lag1') med over i udskriftsvinduet.

Jeg bør tilføje at de enkelte positioner (left, top osv) kommer til at ligger i en database, hvorfor jeg på siden vil bruge PHP/MYSQL.

olebole >> jeg kan godt se pointen i din beskrivelse og det er helt sikkert sådan noget jeg er ude efter, men hvordan man lige kringler koden er jeg ikke velbevandret nok i JavaScript til at lure. Så hvis du kunne smide en lille kodestump jeg kunne bakse lidt med ville det være en stor hjælp.

vh
Jens
Avatar billede jenslund Juniormester
25. november 2004 - 15:10 #5
aktivtLag = false; skal denne sættes i toppen af de to funktioner?
Avatar billede jenslund Juniormester
25. november 2004 - 15:14 #6
Det jeg selv tænkte lidt i, men opgav at knække selv, var at indføre en variable old_id i toppe af hver funktion. Denne ville blive sat lig med det aktuelle id. Når jeg så efterfølgende vælger en anden knap (et andet id), old_id først sætte visibility = "hidden" - på en eller anden måde. Det er lidt derfor jeg er ude i overførsel af variable.

Jens
Avatar billede jenslund Juniormester
25. november 2004 - 15:16 #7
Undskyld old_id skal naturligvis først sættes i bunden af funktionen
Avatar billede olebole Juniormester
25. november 2004 - 15:25 #8
var old_id = false;
function over(id) {
  if (old_id) document.getElementById(old_id).style.visibility = "hidden";
  document.getElementById(id).style.visibility = "visible";
  old_id = id;
}

... så behøver du ingen 'ud()' funktion
Avatar billede olebole Juniormester
25. november 2004 - 15:30 #9
Du kan sætte en variabel - eller kalde en funktion - i et popup vindue med:

var popWin = null;
function myPop() {
  popWin = window.open("side.php", "popWin", "width=500,height=350");
  popWin.focus();
}

function setVar(val) {
  popWin.minVariabel = val; // Sæt variabel i popup'en
  popWin.minFunktion(val);    // Kald funktion i popup'en
}
Avatar billede jenslund Juniormester
25. november 2004 - 15:40 #10
Fedt så virker den del. Nu mangler jeg så at kunne smide variablen id ind i en helt almindelig <a href onclick=pøpøp(id)> ... et eller andet i den retning.

Jeg gør lige det irriterende at jeg smider min nye kode. Funktion for oven virker, men jeg er i tvivl om id=id; er rigtigt tænkt. Forneden vil jeg gerne have skrevet værdierne for old_id og id ud (fx lag1 eller lag2) - men det er tydeligvis ikke den rigtige måde jeg prøver at gøre det på.

<html>

<head>

<title>Untitled</title>

<script language="javascript">   
    ns4 = (document.layers)? true:false
    ie4 = (document.all)? true:false
    ie5 = (document.getElementById)? true:false
    ns6 = (document.getElementById && !document.all)?true:false;

    var old_id = false;

    function over(id){
        if (old_id) document.getElementById(old_id).style.visibility = "hidden";
        var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style; styleObj.visibility = "visible";
        old_id = id;
    }

</script>
</head>

<body>

<img src="0001.jpg"><br>

<a href="#" onMousedown="over('lag1');">kuk</a><br>
<a href="#" onMousedown="over('lag2');">kuk</a><br>

<div id="lag1" name="lag1" style="position: absolute; left:50; top:50; width: 200; height:100; z-index: 3; visibility: hidden"><font size="+8" color="red">&bull;</font></div>

<div id="lag2" name="lag2" style="position: absolute; left:50; top:100; width: 200; height:100; z-index: 3; visibility: hidden"><font size="+8" color="red">&bull;</font></div>

<script language="javascript">document.write(id)</script>
<script language="javascript">document.write(old_id)</script>
</body>

</html>

jens
Avatar billede jenslund Juniormester
25. november 2004 - 15:55 #11
jegs skrev ; "men jeg er i tvivl om id=id;" - det var lige noget vrøvl der, noget jeg prøvede men som ej virkede - geeee min hjerne kører langsomt i dag ;-)
Avatar billede olebole Juniormester
25. november 2004 - 17:39 #12
Du skal nok lave noget lignende:
  <a href="#" onMousedown="over('lag1');" onclick="return false">kuk</a>
men så skulle det da også gerne virke  :)

Jeg ved dog ikke rigtig, hvad du vil med de to document.write's. De bliver kun kørt, når dokumentet loader - og så sker der jo ikke en squid  :)
Avatar billede jenslund Juniormester
25. november 2004 - 17:42 #13
document.write var for lige at se at mine variable kom igennem.

Jeg tester de andre ting i morgen.

vh
Jens
Avatar billede jenslund Juniormester
26. november 2004 - 10:12 #14
Ok så nu ser det sådan her ud.

<html>

<head>

<title>Untitled</title>

<script language="javascript">   
    ns4 = (document.layers)? true:false
    ie4 = (document.all)? true:false
    ie5 = (document.getElementById)? true:false
    ns6 = (document.getElementById && !document.all)?true:false;

    var old_id = false;

    function over(id){
        if (old_id) document.getElementById(old_id).style.visibility = "hidden";
        var styleObj = (ns4)? document.layers[id] : (ie4)? document.all[id].style : document.getElementById(id).style; styleObj.visibility = "visible";
        old_id = id;
        this_layer = id;
    }

    function print(this_layer){
        win = window.open('print.php?this_layer=' + this_layer, 'Udskriftsvindue', 'height=400,width=700, directories=no, title=no, location=no, menubar=no, resizeable=no, status=no, toolbar=no');
    }



</script>
</head>

<body>

<img src="0001.jpg"><br>

<a href="#" onMousedown="over('lag1');" onclick="return false">kuk</a><br>
<a href="#" onMousedown="over('lag2');" onclick="return false">kuk</a><br>

<div id="lag1" name="lag1" style="position: absolute; left:50; top:50; width: 200; height:100; z-index: 3; visibility: hidden"><font size="+8" color="red">&bull;</font></div>

<div id="lag2" name="lag2" style="position: absolute; left:50; top:100; width: 200; height:100; z-index: 3; visibility: hidden"><font size="+8" color="red">&bull;</font></div>

<a href="#" onclick="print(this_layer)">her</a>  </body>

</html>

Og det virker - ser det ud til. Så der er vel ikke andet at sige end at du skal smide et svar olebole - og tak skal du have for hjælpen.

I øvrigt: nu er det et stykke tid siden jeg har brugt eksperten - er tommy carstensens kommentar et udtryk for spillereglerne herinde nu - at man kun hjælper folk der abonnerer?

vh
Jens
Avatar billede tommy_carstensen Nybegynder
27. november 2004 - 16:05 #15
Hej Jens,

Jeg var bare interesseret i at følge tråden og skrev derfor en kommentar for at "abonnere" på tråden og få tilsendt mails ved opdatering. Det er ikke en spilleregel. Det er bare dårligt brugerinterface :)

MVH Tommy
Avatar billede jenslund Juniormester
27. november 2004 - 22:19 #16
... og nu har du fået mig til at abonnere på Eksperten bare for det - grrrrrr ;-)

... bare fordi jeg ville være en flink dreng
vh
Jens
Avatar billede roenving Novice
19. december 2004 - 02:35 #17
-- og det hører med i abonner-historien, at man kan få mails fra et spørgsmål ved bare at trykke send uden at skrive noget når Abonnér-boksen er checket ...

-- men så kommer spørgsmålet dog ikke frem i Nyeste indlæg !-)
Avatar billede olebole Juniormester
19. december 2004 - 03:19 #18
... men det skal man vide, da det vist ikke står skrevet noget sted => endnu dårligere 'bruger-inder-fjæs'  ;o)
Avatar billede roenving Novice
19. december 2004 - 03:24 #19
Ja, det kræver zq nok at man kan finde på at skrive http://expfaq.1go.dk i adresse-linjen, sådan bare for sjov !-)
Avatar billede olebole Juniormester
19. december 2004 - 03:31 #20
java script:if(window.clairVoyance)location.href=window.getVue("hvordan abonnerer man mon på Eksperten.dk")

... må vel kunne gøre det  :)
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