Avatar billede Keld Nielsen Professor
30. juli 2006 - 12:56 Der er 18 kommentarer og
1 løsning

Overføre tal i et script

Jeg er ikke skrap til Javascript, og har derfor "lånt" lidt hist og pist.

Mangler nu at få et tal overført til et andet sted i scriptet, hele siden ses her:
http://www.prolight.dk/eksperten/valuta.html

Mit eksakte problem er at få overført valutaberegningstalet til beregningen, se udsnit af koden:
var durations=new Array(3);
var active=0;
durations[0]=new Array(3);
durations[0]["shorttext"]='DKK'
durations[0]["longtext"]='Pricelist is showing in Danish kroner'
durations[0]["duration"]='100'
durations[1]=new Array(3);
durations[1]["shorttext"]='US$'
durations[1]["longtext"]='Pricelist is showing in US dollar'
durations[1]["duration"]='584.94'
durations[2]=new Array(3);
durations[2]["shorttext"]='Euro'
durations[2]["longtext"]='Pricelist is showing in Euro'
durations[2]["duration"]='600.50'
function switchDuration(number) {
    document.getElementById("shorttext"+active).style.fontWeight="";
    document.getElementById("shorttext"+active).style.color="";
    document.getElementById("shorttext"+number).style.fontWeight="bold";
    document.getElementById("shorttext"+number).style.color="red";
    document.getElementById("desc").innerHTML=durations[number]["longtext"]+"  - rate of exchange "+durations[number]["duration"];
    active=number;
}


function factorNums()
{
    //init
    factor=100/584.94;

--- her skal de 584.94 overføres fra den øverste oplysning og ned hvor den står nu.

Ideén er selvfølgelig at valutaberegningen kan laves fra DKK til US$ eller Euro.
Avatar billede farving Nybegynder
30. juli 2006 - 16:02 #1
hvis du i dit øverstescript har noget med variabel = factorNums();

og du så i factorNums skriver return factor

så burde du overføre det på den måde

Mvh Carsten
Avatar billede Keld Nielsen Professor
30. juli 2006 - 16:34 #2
Den må du prøve at forklare lidt nøjere - jeg kan desværre ikke få det til at "spille"
Avatar billede farving Nybegynder
30. juli 2006 - 16:53 #3
function noget() {
//første script
factor = factorNums();
}

function factorNums(){
factor = 100/584.94;
return factor;
}

Hvis du forstår den?
Avatar billede Keld Nielsen Professor
30. juli 2006 - 17:15 #4
Ikke helt!

Jeg har jo talene i den første script, og de skifter ved valg af valuta, og skal så ned istedet for der hvor der i dag står:
factor=100/584.94;

Det er talet fra f.eks.: durations[1]["duration"]='584.94', jeg hvis det der er valgt US$, der skal står i beregningen.
Altså hvis der skiftes til Euro, skal linien forstås som: factor=100/600.50;

...giver det logik?
Avatar billede farving Nybegynder
30. juli 2006 - 17:34 #5
ahhhh :)

Så kan du i factorNums lave det sådan her

function factorNums() {
factor = Andenfunction();
}

og så lave en return i det andet script :) det return skal så indeholde den rigtige værdi jo :)

du skal huske at en function altid skal retunere noget hvis du sætter en variabel = en funktion

Håber du forstår den del så :)

Mvh Carsten
Avatar billede Keld Nielsen Professor
30. juli 2006 - 20:16 #6
Desværre funker det ikke for mig, jeg har lavet det som flg.:

var durations=new Array(3);
var active=0;
durations[0]=new Array(3);
durations[0]["shorttext"]='DKK'
durations[0]["longtext"]='Pricelist is showing in Danish kroner'
durations[0]["duration"]='100'
durations[1]=new Array(3);
durations[1]["shorttext"]='US$'
durations[1]["longtext"]='Pricelist is showing in US dollar'
durations[1]["duration"]='584.94'
durations[2]=new Array(3);
durations[2]["shorttext"]='Euro'
durations[2]["longtext"]='Pricelist is showing in Euro'
durations[2]["duration"]='600.50'
function switchDuration(number) {
    document.getElementById("shorttext"+active).style.fontWeight="";
    document.getElementById("shorttext"+active).style.color="";
    document.getElementById("shorttext"+number).style.fontWeight="bold";
    document.getElementById("shorttext"+number).style.color="red";
    document.getElementById("desc").innerHTML=durations[number]["longtext"]+"  - rate of exchange "+durations[number]["duration"];
    active=number;
    return durations[number]["duration"];
}

function factorNums()
{
    //init
    //factor=100/584.94;
    factor=switchDuration();
    factor=100/factor;
Avatar billede farving Nybegynder
30. juli 2006 - 22:49 #7
Well, du havde hvertfald et par fejl, og har ændret opbygningen af koden så den blive IMO lidt mere bearbejdsom :)

Mvh Carsten

==========

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Test gange med faktor</title>
<script type="text/javascript">
var active = 0;
var durations=new Array(3);
durations[0] = "durationsDK";
durations[1] = "durationsUS";
durations[2] = "durationsEuro";
durationsDK = new Array(3);
durationsDK[0] = "DKK";
durationsDK[1] = "Pricelist is showing in Danish kroner";
durationsDK[2] = 100;
durationsUS = new Array(3);
durationsUS[0] = "US$";
durationsUS[1] = "Pricelist is showing in US dollar";
durationsUS[2] = "584.94";
durationsEuro = new Array(3);
durationsEuro[0] = "Euro";
durationsEuro[1] = "Pricelist is showing in Euro";
durationsEuro[2] = "600.50";

function switchDuration(number) {
    document.getElementById("shorttext"+number).style.fontWeight="";
    document.getElementById("shorttext"+number).style.color="";
    document.getElementById("shorttext"+number).style.fontWeight="bold";
    document.getElementById("shorttext"+number).style.color="red";
    document.getElementById("desc").innerHTML = eval(durations[number])[1]+" - rate of exchange " + eval(durations[number])[2];
    return eval(durations[number])[2];
}

function factorNums(number)
{
    factor=switchDuration(number);
    factor=100/factor;
}
</script>
</head>
<body>
<form id="something">
<script language="JavaScript">
for (i=0;i<3;i++) {
document.write("<input type='radio' onclick='factorNums(\"", i, "\")'><br />");
}
</script>
</form>
<script language="JavaScript">
for (n=0;n<3;n++) {
document.write("<div id='shorttext" + n + "'></div><br />");
}
document.write("<div id='desc'></div>");
</script>
</body>
</html>
Avatar billede Keld Nielsen Professor
31. juli 2006 - 15:24 #8
Det gjorde det desværre ikke lettere for mig at gennemskue.

Jeg har lagt din kode her:
http://www.prolight.dk/eksperten/valuta-exp.html

Det jeg gerne skal bruge er som denne:
http://www.prolight.dk/eksperten/valuta.html
-men hvor tallene til højre rettes alt efter hvilken valuta der vælges.

altså en simpel valutaomregner, men da det er mange tal, er metoden med at indtaste dem i DKK i en span, dejlig at vedligeholde.

Håber du forstå min tankegang!
Avatar billede farving Nybegynder
31. juli 2006 - 16:53 #9
Jeg tror desværre ikke jeg helt ved hvad det er du vil have mig til...

Mvh Carsten
Avatar billede Keld Nielsen Professor
31. juli 2006 - 17:21 #10
Ja, man synes jo selv det er så logisk!

Jeg har brug for en side, som jeg har forsøgt at vise på:
http://www.prolight.dk/eksperten/valuta.html
hvor man øverst kan vælge mellem at vise nogle (i virkeligheden ret mange) priser i danske kroner.
Ved at vælge en anden valuta, f.eks. US$ skal alle priser omregnes til dette, via den oplyste valutakurs, i eksemplet 584.94.

Der skal så kun indtastes en ny valutakurs i ny og næh, og for brugeren vil det være muligt at se priserne både i DKK, US$ og Euro.

På ovenstående link virker det næsten, men det jeg mangler er at få de tre valutakurser, til at blive skiftet ud i denne linie: factor=100/584.94; hvor der i stedet for valutakursen skal være en variabel fra det ovenstående valg.

Altså resultatet i første linie skal se sådan ud,
Ved DKK:  100,00    100,00
Ved US$:    100,00    17,10
Ved Euro:    100,00      16,65

Håber dette giver logikken du mangler!
Avatar billede farving Nybegynder
31. juli 2006 - 18:08 #11
ahh :) jamen hvis du ikke kalder den switchDuration, så kan du gøre det i function factorNums

test = switchDuration();
factor = 100/test;

Så burde det virke
...

Mvh Carsten
Avatar billede Keld Nielsen Professor
01. august 2006 - 15:15 #12
OK ....den opgiver vi vist lige!

Men smid alligevel et svar, for din ulejlighed.
Avatar billede farving Nybegynder
01. august 2006 - 18:59 #13
Hmm, du kunne også bare bygge de to funktioner ind i hinanden :)

Men okay, her er et svar og altid til tjeneste

Mvh Carsten
Avatar billede Keld Nielsen Professor
01. august 2006 - 19:08 #14
Jeg har prøvet med alt, synes jeg, men kan simpelthen ikke få valget ned i funktionen "factorNums", nu har jeg nok brugt 10 timer på det, så jeg må se at finde en proffesionel til at løse det for mig.
Avatar billede roenving Novice
24. august 2006 - 00:58 #15
function factorNums()
{
    //init
    factor=100/durations[active]["duration"];
Avatar billede Keld Nielsen Professor
24. august 2006 - 17:14 #16
Hej 'roenving'
...blev lige så lykkelig da jeg så din kommentar, men desværre, det virker stadig ikke, jeg har lagt siden ud med din rettelse sat ind:
http://www.prolight.dk/eksperten/valuta2.html
Avatar billede farving Nybegynder
27. august 2006 - 11:04 #17
Lige en indskydelse, det er ikke fordi at du bruger '' i stedet for ""?

Mvh Carsten
Avatar billede roenving Novice
30. august 2006 - 12:36 #18
En anden tilgangsvinkel:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Test gange med faktor</title>
<script type="text/javascript">

var durations=new Array(3);
var active=0;
durations[0]=new Array(3);
durations[0]["shorttext"]='DKK'
durations[0]["longtext"]='Pricelist is showing in Danish kroner'
durations[0]["duration"]='100'
durations[1]=new Array(3);
durations[1]["shorttext"]='US$'
durations[1]["longtext"]='Pricelist is showing in US dollar'
durations[1]["duration"]='584.94'
durations[2]=new Array(3);
durations[2]["shorttext"]='Euro'
durations[2]["longtext"]='Pricelist is showing in Euro'
durations[2]["duration"]='600.50'
function switchDuration(number) {
    document.getElementById("shorttext"+active).style.fontWeight="";
    document.getElementById("shorttext"+active).style.color="";
    document.getElementById("shorttext"+number).style.fontWeight="bold";
    document.getElementById("shorttext"+number).style.color="red";
    document.getElementById("desc").innerHTML=durations[number]["longtext"]+"  - rate of exchange "+durations[number]["duration"];
    active=number;
    factorNums();
}


function factorNums()
{
    //init
    factor=100/durations[active]["duration"];
   
    numberInitPattern=/\d+\.\d{0,2}/g;
    numberWithoutDecimals=/\d+/g;
    talSpans=new Array;
    results=new Array;

    spans=document.getElementsByTagName("span");    //læg alle spans i dokumentet ind i spans
   

    for(i=0;i<spans.length;i++)    //læg de spans hvis id=tal ind i talSpans
    {
        if(spans[i].className.indexOf("tal")==0)
        {
            talSpans.push(spans[i]);
        }
    }
    alert(talSpans.length);
    //tjek om hver enkelt talspan indeholder et nummer efter numberInitPattern-skabelonen,
    //og læg dem der gør ind i results.
   
    for(i=0;i<talSpans.length;i++)
    {
        /*if(!talSpans[i].className.replace(/tal/,"").match(numberWithoutDecimals).length<1) talSpans[i].className+=".00";
        results[i]=talSpans[i].className.replace(/tal/g,"").match(numberInitPattern);*/
        results[i] = talSpans[i].className.replace(/tal/,"");
    }

    //gang alle results med factor og indsæt dem i dokumentet.
    for(i=0;i<results.length;i++)
    {
        alert(results[i]);
        results[i]=results[i]*factor;
        talSpans[i].innerHTML=readingComma(correctDecimals(results[i]));
    }
}

function correctDecimals(tal)
{   
    tal=tal+"";
    if (typeof(tal)==String)tal=parseFloat(tal);
    if(tal.substring(tal.length-4).match(/\,[0-9][0-9]/)) return tal;
    talTx="_"+Math.round( 100.0*tal)+"_";
    if (talTx.length<5)
    {
        preZero="_000";
        talTx=preZero.substring(0,6-talTx.length)+talTx.substring(1);
    }
    talTx=talTx.substring(1,talTx.length-3)+","+talTx.substring(talTx.length-3,talTx.length-1);
    tal=talTx;

    return tal;
}



function readingComma(num)
{
    num+="";
    splitted=num.split('.');
    spl1=splitted[0];
    spl2=splitted.length>1?"."+splitted[1]:'';
    var pattern=/(\d+)(\d{3})/;
    while(pattern.test(spl1))
    {
        spl1=spl1.replace(pattern,'$1'+'.'+'$2');
    }
    return spl1+spl2;
}

//hvis Array.push ikke findes
if (typeof Array.prototype.push == 'undefined') {
    Array.prototype.push=function(txt)
    {
        return this[this.length]=txt;
    }
}
</script>

</head>

<body onload="factorNums()">
<input onclick="switchDuration(0);" type="radio" value="0" name="duration">
<span id="shorttext0">DKK</span>
<input onclick="switchDuration(1);" type="radio" value="1" name="duration">
<span id="shorttext1">US$</span>
<input onclick="switchDuration(2);" type="radio" value="2" name="duration">
<span id="shorttext2">Euro</span><br>
<span id="desc">Pricelist is showing in Danish kroner</span>

<p>&nbsp;</p>
<table width="200" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><div align="right">DKK</div></td>
    <td><div align="right">omregnet</div></td>
  </tr>
  <tr>
    <td><div align="right">100,00</div></td>
    <td><div align="right"><span class="tal100.00">100,00</span></div></td>
  </tr>
  <tr>
    <td><div align="right">2000,00 </div></td>
    <td><div align="right"><span class="tal2000.00">2000,00</span></div></td>
  </tr>
  <tr>
    <td><div align="right">3231,25</div></td>
    <td><div align="right"><span class="tal3231.25">3231,25</span></div></td>
  </tr>
  <tr>
    <td><div align="right">12234,12</div></td>
    <td><div align="right"><span class="tal12234.12">12234,12</span></div></td>
  </tr>
</table>
</body>
</html>
Avatar billede Keld Nielsen Professor
30. august 2006 - 13:20 #19
Kanon - roenvig!

...må jeg ikke give dig nogle point: http://www.eksperten.dk/spm/729330
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