Avatar billede Slettet bruger
07. juni 2005 - 15:48 Der er 23 kommentarer og
3 løsninger

Ved valg af select, ændr en innerHTML værdi

Jeg har en <select> der bliver defineret fra en database. Værdien i <selecten> er et id, hvorfor jeg bliver nødt til at komme i kontakt med databasen igen.
Da dette ikke er muligt vælger jeg at lave et array i javascript, der skal gemme på rækkerne i databasen (3-4 stykker).

Men når jeg kommer min <select> ind under et <form>-tag får jeg fejlen "objectet understøttes ikke": Her er mit script:

formen:

<form method=\"post\" name=\"formen\" action=\"\">
              <tr>
                <td>Betalingsomkostninger:</td>
                <td colspan=\"2\">". $betaling."</td>
                <td style=\"text-align: right;\"><span style=\"border-bottom: 3px double black;\"><span id=\"betalingsomkostninger\"></span> kr.</span></td>
              </tr>
</form>

<selecten>:


  <tr>
    <td>Betalingsomkostninger:</td>
    <td colspan=\"2\">". $betaling."</td>
    <td style=\"text-align: right;\"><span style=\"border-bottom: 3px double black;\"><span id=\"betalingsomkostninger\"></span> kr.</span></td>
  </tr>



javascripten:

$query1 = $generel->query("SELECT * FROM betalingsmetoder ORDER BY pris ASC");
while($row1 = mysql_fetch_object($query1))
    {
    $arr .= 'arr[\''.$row1->id.'\'] = \''.$row1->pris.'\';
    ';
    }   
$udskrift = "
<script language=\"javascript\">
function betaling(s)
    {
    var arr = new Array;
    ".$arr."
    document.getElementById('betalingsomkostninger').innerHTML = arr[s.value];
    }
Avatar billede Slettet bruger
07. juni 2005 - 15:58 #1
Den første "formen:" og de næste 8 linier var en lille fejl :S de skal bare ignoreres
Avatar billede Slettet bruger
07. juni 2005 - 16:56 #2
Det kan ses på www.webextreme.dk/produkter/ . Start med at lægge noget i kurven, tryk derefter "til kurv" i højre hjørne, for derefter at trykke "køb".
Avatar billede gryn Nybegynder
07. juni 2005 - 17:11 #3
Dit script på siden ser ikke helt sådan ud, som du lige har skrevet. Du har et ".value" for meget, hvis du vil kalde scriptet, som du gør på hjemmesiden.

<script language="javascript">
            function betaling(s)
                {
                var arr = new Array;
                arr['2'] = '0';
                arr['1'] = '30';
               
                document.getElementById('betalingsomkostninger').innerHTML = arr[s];
                }
               
            </script>


Ovenstående fandt jeg frem til.... sådan har du kaldt den:


<select name="betaling" onchange="betaling(this.options[this.selectedIndex].value)"><option value="2">Bankoverførsel</option><option value="1">Efterkrav</option> blah..... blah....


Der skal vis ikke være noget options. Der skal således stå:


<select name="betaling" onchange="betaling(this[this.selectedIndex].value)"><option value="2">Bankoverførsel</option><option value="1">Efterkrav</option> blah..... blah....


tror jeg :-)
Avatar billede Slettet bruger
07. juni 2005 - 17:16 #4
Jeg får stadig samme fejl.. Objektet understøtter ikke denne metode eller egenskab
Avatar billede gryn Nybegynder
07. juni 2005 - 19:01 #5
hmmm... ok. Kigger lige på det en ekstra gang
Avatar billede gryn Nybegynder
07. juni 2005 - 19:02 #6
når jeg har spist
Avatar billede Slettet bruger
07. juni 2005 - 19:46 #7
okay. jeg har faktisk fået ændret det.. Jeg lavede det hele om..

Men jeg mangler en funktion der kan lave 2 decimaler på alle tal?
Avatar billede gryn Nybegynder
07. juni 2005 - 19:51 #8
Men den kommer da ikke med den alert, som du beder om nu heller.... det med de 2 decimaler.... 2 sek
Avatar billede gryn Nybegynder
07. juni 2005 - 19:55 #9
det med nummeret kommer her:

<script type="text/javascript">
function afrund(num){
return(Math.round(100*num)/100);
}

document.write(afrund(145.6789))
</script>
Avatar billede olebole Juniormester
07. juni 2005 - 19:56 #10
<ole>

Årsagen er vel bare, at denne fejler:
    this.[this.selectIndex].value

Dels hedder det:
    this.[this.selectedIndex].value
- dels kræver den, at der er valgt noget i select'en ... og det er der ikke fra fødselen  ;o)

<option value="gnu" selected>Fars Gnu</option>

- vil formodentlig klare problemet sammen med den korrekte syntaks ... eller du kan anvende:
  this.value
- i stedet for:
  this.[this.selectIndex].value

/mvh
</bole>
Avatar billede gryn Nybegynder
07. juni 2005 - 19:56 #11
ah... du vil også gerne have skrevet 00 hvis det bliver helkroner. 2 sek
Avatar billede gryn Nybegynder
07. juni 2005 - 20:06 #12
<script type="text/javascript">
function afrund(num){
if(num%1==0){
return(num + ".00");
}
else {
if((10*num)%1==0){
return(num+"0");
}
else{
return(Math.round(100*num)/100);
}
}
}
document.write(afrund(145))
</script>
Avatar billede gryn Nybegynder
07. juni 2005 - 20:28 #13
Ok... det var ikke det der var problemet. Din ID havde samme navn som du funktion, hvilket giver en konflikt.

Således skal javascriptet se ud:
<script language="javascript" type="text/javascript">
function betal(s){
alert(s);
}
               
</script>



således skal din select se ud:

<select id="betalingen" name="betaling" onchange="betal(this.value);">

<option value="2" selected>Bankoverførsel</option>
<option value="1">Efterkrav</option>
</select>


Og såfremt du gerne vil have aktiveret "betal-funktionen" med opstartsværdien skal din <body> laves om til:

<body onload="betal(document.kasse.betaling.value);">
Avatar billede gryn Nybegynder
07. juni 2005 - 20:31 #14
generelt set ville det også være lidt mere elegant, hvis dit JavaScripteri blev flyttet op i <head>-sektionen, men det er bare en detalje.
Avatar billede gryn Nybegynder
11. juni 2005 - 23:03 #15
er du der endnu?
Avatar billede Slettet bruger
14. juni 2005 - 20:42 #16
hov.. nej jeg troede jeg ville få en e-mail.. det må i undskylde.
Avatar billede Slettet bruger
14. juni 2005 - 20:44 #17
Jeg sætter lige point'ene op til det dobbelte.. olebole vil du ikke også lægge et svar?
Avatar billede olebole Juniormester
22. juni 2005 - 21:42 #18
Hold da op for en fyldt inbox at komme hjem til  :D
Avatar billede Slettet bruger
23. juni 2005 - 12:26 #19
Ja jeg fik også en god håndfuld mails.. I de sidste 2 dage har jeg fået 4-600 mails om dagen :/
Avatar billede Slettet bruger
23. juni 2005 - 12:26 #20
Hvad sker der for pointfordeling?
Avatar billede olebole Juniormester
23. juni 2005 - 12:30 #21
*ROTFLMAO* Bare fordi, mail-systemet er blevet fikset, skal man ikke tro, det er slut med underholdningen. Ekspertens koderes kompetencer er højt specialiserede .... det vides dog ikke helt indenfor hvad  ;D
Avatar billede olebole Juniormester
23. juni 2005 - 12:30 #22
PS: tak for points  ;o)
Avatar billede Slettet bruger
23. juni 2005 - 13:32 #23
hehe ;) 

Selv tak for dine svar.
Avatar billede Slettet bruger
23. juni 2005 - 22:12 #24
Jeg har stadig 1 point ude.. Det her er da næsten til grin ;D
Avatar billede roenving Novice
23. juni 2005 - 22:14 #25
Den endelige opdatering sker vist først, når cron-jobbet køres kl. 5 morgen !-)
Avatar billede Slettet bruger
23. juni 2005 - 22:54 #26
ok.. Jeg tror bare ikke det vil påvirke mine point ;D
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