Avatar billede paaskehare Nybegynder
27. december 2008 - 06:29 Der er 39 kommentarer og
1 løsning

getElementById Problem

Hejsa, jeg prøver at få min ewire knap til at reagere på et beløb man vælger på en dropdown boks, men jeg kan simpelthen ikke få det til at virke, har først følgene:

<script type="text/javascript">
function asd {
    document.getElementById("beloeb").value;
}
<!--
   
    var beloeb = asd();
-->
</script>

Og selve linket her:

<a style="cursor:pointer" onclick="java script:open_ewire_email('mail@mail.dk','navn','emne','besked', beloeb,'0','0');"><img src='http://www.ewire.dk/images/icons/ewire_betal_med_ani.gif' border='0'></a>

Men når jeg trykker på min ewire knap kommer der følgene under beløbet:
[object HTMLSelectElement]

Hvad kan jeg gøre ved dette problem? :)
Avatar billede erikjacobsen Ekspert
27. december 2008 - 14:12 #1
Den skal nok være

function asd() {
    return document.getElementById("beloeb").value;
}
Avatar billede paaskehare Nybegynder
27. december 2008 - 16:18 #2
Jeg får stadig den samme fejl :/
Avatar billede olebole Juniormester
27. december 2008 - 16:33 #3
<ole>

Jeg fostår ikke den kode, du viser. I din handler kalder du i hvertfald ikke funktionen (og Eriks rettelse _skal_ i øvrigt være der). Til gengæld medsender du vist (i visse browsere) en reference til select-elementet i form af 'beloeb' - men det er ikke til at vide udfra det viste  =)

/mvh
</bole>
Avatar billede paaskehare Nybegynder
27. december 2008 - 16:47 #4
Hej Ole (Great name ;))

Jeg sad allerede og ændrede i koden 2 sekunder efter jeg skrev det her, men kunne ikke finde ud af at ændre mit indlæg, men koden ser pt således ud:

<script type="text/javascript">
    var beloeb = document.getElementById("beloeb").value;
</script>

Link:

<a style="cursor:pointer" onclick="java script:open_ewire_email('mail@mail.dk','navn','emne','besked', beloeb,'0','0');"><img src='http://www.ewire.dk/images/icons/ewire_betal_med_ani.gif' border='0'></a>

Og den dropdown den henter beløbet fra:

<select id="beloeb">
<option value="" selected>---Choose Donation Amount---</option>
<option value="">Other Donation Amount</option>
<option value="50">DKK 50.00</option>
<option value="100">DKK 100.00</option>
<option value="200">DKK 200.00</option>
<option value="500">DKK 500.00</option>
</select>

Den funktion jeg kalder i linket bliver hentet fra et script man får af ewire, og kan findes her:
http://www.ewire.dk/includes/quickservice_functions.js.asp

For jeg har lidt mistanke til at problemet ikke 100% ligger i en fejl 40, men nok mere valideringen af koden igennem det javascript jeg har fået udleveret af ewire, desværre er mine javascript evner begrænsede, og jeg har en del svært ved at tyde kildekoden :)
Avatar billede erikjacobsen Ekspert
27. december 2008 - 16:53 #5
Du skal vel bare udføre din
  beloeb = document.getElementById("beloeb").value;
efter hver ændring i brugerens valg i select-en.
Avatar billede paaskehare Nybegynder
27. december 2008 - 17:07 #6
Jeg har prøvet med dette også erikjacobsen, og det gav samme resultat:

function skiftBeloeb() {
  var beloeb = document.getElementById("beloeb").value;
}

og så skrevet:
<select id="beloeb" onChange="skiftBeloeb()">

i stedet for <select id="beloeb"> selvfølgelig :)
Avatar billede erikjacobsen Ekspert
27. december 2008 - 17:18 #7
Erstat

function skiftBeloeb() {
  var beloeb = document.getElementById("beloeb").value;
}

med

var beloeb="0";
function skiftBeloeb() {
  beloeb = document.getElementById("beloeb").value;
}
Avatar billede olebole Juniormester
27. december 2008 - 17:19 #8
Jamen du laver noget rod her:
    <a style="cursor:pointer" onclick="java script:open_ewire_email('mail@mail.dk','navn','emne','besked', beloeb,'0','0');">

Det femte argument skal jo være beløbet - men er blot navnet på select-boksen  ;o)
Prøv:

function findBeloeb() {
  return document.getElementById("beloeb").value;
}

<a style="cursor:pointer" onclick="java script:open_ewire_email('mail@mail.dk','navn','emne','besked', findBeloeb(),'0','0');">
Avatar billede olebole Juniormester
27. december 2008 - 17:21 #9
Erik >> Pas på! Nu døber du variablen til det samme som selecten hedder. Det skaber problemer i visse browsere - og er allerede dét, der giver spørgeren problemer i kaldet i hans handler  ;o)
Avatar billede erikjacobsen Ekspert
27. december 2008 - 17:23 #10
"visse browsere" ... er der nogen, der bruger dem?
Avatar billede olebole Juniormester
27. december 2008 - 17:23 #11
- og man kunne også skrive:
    <a style="cursor:pointer" onclick="java script:open_ewire_email('mail@mail.dk','navn','emne','besked', document.getElementById('beloeb').value,'0','0');">

- men det er bare ikke så pænt  =)
Avatar billede olebole Juniormester
27. december 2008 - 17:27 #12
Erik >> Ja, du kan jo se i spørgsmålet, at brugeren gør. Da IE ikke udskriver '[object HTMLSelectElement]', ligner det til forveksling en besked fra Firefox ... men dén er der såmænd nok også dem, der kunne finde på at anvende  ;o)
Avatar billede olebole Juniormester
27. december 2008 - 17:29 #13
- og bevares ... det hele ændres formodentlig af din brug af 'var' - men alligevel  ;o)
Avatar billede paaskehare Nybegynder
27. december 2008 - 17:33 #14
Nu har jeg prøvet det du siger Ole, men nu bliver linket bare "inaktivt", dvs. der sker intet når jeg trykker på den :/
Avatar billede olebole Juniormester
27. december 2008 - 17:53 #15
Nope! Det funker fint, hvis du gør, som jeg siger  =)

<script type="text/javascript">
function open_ewire_email(a,b,c,d,e,f,g) {
    alert(e)
}

function findBeloeb() {
  return document.getElementById("beloeb").value;
}
</script>

<a style="cursor:pointer" onclick="java script:open_ewire_email('mail@mail.dk','navn','emne','besked', findBeloeb(),'0','0');">TEST</a>

<select id="beloeb">
    <option value="val_1">Emne 1</option>
    <option value="val_2">Emne 2</option>
    <option value="val_3">Emne 3</option>
    <option value="val_4">Emne 4</option>
</select>
Avatar billede olebole Juniormester
27. december 2008 - 17:54 #16
Du må lave fejl, du ikke omtaler - men det er svært at vide hvilke, når man ikke kan se hele din kode  =)
Avatar billede paaskehare Nybegynder
27. december 2008 - 18:12 #17
Jeg kan godt få dit script til at virke, men når jeg har den "inkluderede funktion" sker der ingenting når jeg trykker på linket :)
Avatar billede olebole Juniormester
27. december 2008 - 18:23 #18
Så er der andre fejl  =)
Avatar billede paaskehare Nybegynder
27. december 2008 - 18:27 #19
Du har ikke mulighed for at tage et lille kig på det? For hele funktionen står jo her:
http://www.ewire.dk/includes/quickservice_functions.js.asp
Avatar billede olebole Juniormester
27. december 2008 - 18:33 #20
Den gang sovs kan du ikke bruge til ret meget, før du får sat de rigtige linjeskift ind i koden ... og det kan hurtig blive lidt af et gætværk. Få en brugbar kode fra Ewire  =)
Avatar billede olebole Juniormester
27. december 2008 - 18:35 #21
Som koden står nu, består funktionen kun af:

function open_ewire_email(email,name,subject,body,amount,buttoncurrency,allowchange,viewemail,ewireCompanyId,companyorderid,companyfeesubject,companyfeeamount,companyfeepercent,companyfeecurrency) { if (buttoncurrency != "DKK") buttoncurrency = "DKK"; intHeight = 550 intWidth = 600 // hvis vinduet skal centreres på siden, kan vinduets positioner bestemmes her... intLeft = (screen.width / 2) - (intWidth / 2) intTop = (screen.height / 2) - (intHeight / 2)

- hvilket i sig selv vil udløse en JavaScript fejl
Avatar billede olebole Juniormester
27. december 2008 - 18:37 #22
Ahhh ... sorry! Du giver ikke din js-fil den korrekte MIME-type - og jeg kikke bare på den i browseren, hvor den ikke har linjeskift. Kikker lige igen  =)
Avatar billede paaskehare Nybegynder
27. december 2008 - 18:37 #23
Bør jeg i stedet ty til noget php og sende nogle gets med en form? For i bund og grund er det jo sådan set bare det scriptet reagerer på, nogle simple gets :) Så kan jeg vel også nemt lave dem som jeg vil :)
Avatar billede paaskehare Nybegynder
27. december 2008 - 18:39 #24
Ok hehe, for vil hellere have deres til at virke end at skulle lave det selv :)
Avatar billede olebole Juniormester
27. december 2008 - 18:40 #25
Det virker helt fint for mig:

<script type="text/javascript">
function findBeloeb() {
  return document.getElementById("beloeb").value;
}
function open_ewire_email(email,name,subject,body,amount,buttoncurrency,allowchange,viewemail,ewireCompanyId,companyorderid,companyfeesubject,companyfeeamount,companyfeepercent,companyfeecurrency) {
    if (buttoncurrency != "DKK")
        buttoncurrency = "DKK";
   
    intHeight = 550
    intWidth = 600
    // hvis vinduet skal centreres på siden, kan vinduets positioner bestemmes her...
    intLeft = (screen.width / 2) - (intWidth / 2)
    intTop = (screen.height / 2) - (intHeight / 2)
    // åben vindue...   
    //alert(viewemail)
    strURL = "https://secure.ewire.dk/payment/email.asp"
   
    strURL += "?TransactionEmail_Emailaddress=" + email + "&TransactionEmail_Name=" + name + "&TransactionEmail_Subject=" + subject + "&TransactionEmail_Message=" + body + "&TransactionEmail_Amount=" + amount + "&TransactionEmail_Currency="+ buttoncurrency + "&TransactionEmail_AllowChange=" + allowchange
    if (Number(ewireCompanyId) != NaN && Number(ewireCompanyId) > 0) {
        if (companyfeecurrency == '' || companyfeecurrency == null)
            companyfeecurrency = 'DKK';
        strURL += "&TransactionEmail_EwireCompanyId=" + ewireCompanyId + "&TransactionEmail_CompanyOrderID=" + companyorderid + "&TransactionEmail_CompanyFeeSubject=" + companyfeesubject + "&TransactionEmail_CompanyFeeAmount=" + companyfeeamount + "&TransactionEmail_CompanyFeePercent=" + companyfeepercent + "&TransactionEmail_CompanyFeeCurrency=" + companyfeecurrency
    }
    //strURL += "&source=http://www.eksperten.dk/spm/857716"
    if (viewemail != 1)
        strURL += "&action=validate"
    //alert(strURL)
    //alert(allowchange)
    return window.open(strURL, "quickemail","height=" + intHeight + ",width=" + intWidth + ",left=" + intLeft + ",top=" + intTop + ",status=1,location=0,scrollbars=0, menubar=0,toolbar=0")
}

function open_ewire_deposit(email,name,subject,body,amount,buttoncurrency,releasedate,allowchange,viewemail,EwireCompanyId,merchantorderid) {
    if (buttoncurrency != "DKK")
        buttoncurrency = "DKK";

    intHeight = 550
    intWidth = 600
    // hvis vinduet skal centreres på siden, kan vinduets positioner bestemmes her...
    intLeft = (screen.width / 2) - (intWidth / 2)
    intTop = (screen.height / 2) - (intHeight / 2)

    // åben vindue...
    strURL = "https://secure.ewire.dk/payment/deposit.asp"
       
    strURL += "?TransactionDeposit_Emailaddress=" + email + "&TransactionDeposit_Name=" + name + "&TransactionDeposit_Subject=" + subject + "&TransactionDeposit_Message=" + body + "&TransactionDeposit_Amount=" + amount + "&TransactionDeposit_Currency=" + buttoncurrency + "&TransactionDeposit_ReleaseDate=" + releasedate + "&TransactionDeposit_AllowChange=" + allowchange
    if (viewemail != 1)
        strURL += "&action=validate"
    if (Number(EwireCompanyId) != NaN && Number(EwireCompanyId) > 0)
        strURL += "&TransactionDeposit_EwireCompanyId=" + EwireCompanyId + "&TransactionDeposit_MerchantOrderId=" + merchantorderid
   
    return window.open(strURL, "quickdeposit","height=" + intHeight + ",width=" + intWidth + ",left=" + intLeft + ",top=" + intTop + ",status=1,location=0,scrollbars=0")
}
</script>

<a style="cursor:pointer" onclick="java script:open_ewire_email('mail@mail.dk','navn','emne','besked', findBeloeb(),'0','0');">TEST</a>

<select id="beloeb">
    <option value="val_1">Emne 1</option>
    <option value="val_2">Emne 2</option>
    <option value="val_3">Emne 3</option>
    <option value="val_4">Emne 4</option>
</select>
Avatar billede paaskehare Nybegynder
27. december 2008 - 18:43 #26
Det virker fint nu, efter jeg satte "dit script" ind i min egen kode, det var da underligt, men det kan også være ligemeget, jeg takker og bukker i hvert fald :) Og hvordan deler jeg nu de point her ud? :)
Avatar billede olebole Juniormester
27. december 2008 - 18:51 #27
Det kan du først, når jeg lægger et svar  ;o)
Avatar billede paaskehare Nybegynder
27. december 2008 - 18:57 #28
Der sker ingenting når jeg trykker på accepter, den refresher bare siden og så kan jeg scrolle ned og se der står det samme :P

Men jeg har også smidt 170point mere i potten :)
Avatar billede paaskehare Nybegynder
27. december 2008 - 18:58 #29
Oh, skulle lige trykke på dit navn også, troede det var et tekstfelt, men de burde være givet nu :)
Avatar billede olebole Juniormester
27. december 2008 - 19:04 #30
Det er helt fint. Tak for points  ;o)
Avatar billede erikjacobsen Ekspert
27. december 2008 - 20:47 #31
Det kan nu ikke overraske, at en stump javascript leveret med
    Content-Type: text/html
ikke vil virke.
Avatar billede olebole Juniormester
27. december 2008 - 21:08 #32
præcis  ;o)
Avatar billede paaskehare Nybegynder
27. december 2008 - 22:05 #33
Well, scriptet virkede jo fint ud over at den ikke gad tage imod den skide variabel der, selve scriptet skulle jo fetches med:
<script type='text/javascript' language='javascript' src='http://www.ewire.dk/includes/quickservice_functions.js.asp'></script> :)
Avatar billede erikjacobsen Ekspert
27. december 2008 - 22:07 #34
"scriptet virkede jo fint ud" - du har næppe testet alle browsere og kombinationer. Det er forkert at levere javascript med den content-type.
Avatar billede paaskehare Nybegynder
27. december 2008 - 23:08 #35
Det har du ret i jeg ikke har, men jeg regner ikke med at folkene bag ewire kunne finde på at udlevere et script der ikke fungerer :)

Knappen fungerer jo fint i sig selv, men ikke så snart jeg inkluderede andet javascript inde i det url der :)
Avatar billede roenving Novice
28. december 2008 - 12:32 #36
-- og så det iøvrigt noget vrøvl at bruge java script: pseudo-protokollen i en onclick, da det selvfølgelig ikke er nødvendigt at fortælle javascript-fortolkeren, at den skal fortolke script i en script-event som script !-)
Avatar billede erikjacobsen Ekspert
28. december 2008 - 12:45 #37
I en onclick attribut angiver "java script: ..." ikke en pseudo-protokol, men er blot en label i Javascript. Den bliver ikke brugt til noget, og er derfor overflødig, men den er lovlig.

Der er godt nok en enkelt browser, der ikke kan forstå det, og måske derfor misforståelsen opstår. De 3 eksempler nedenfor er lovlige. En enkelt browser stripper "java script:" før udførelse, hvis den står først, hvorefter den sidste bliver ulovlig. Men det må en underbetalt programmør, der selv har fundet på den fortolkning. Eksempler:

  <button onclick="alert(8);java script:while (1) {alert('hej');break javascript}">hej</button>
  <button onclick="xxx:while (1) {alert('hej');break xxx}">hej</button>
  <button onclick="java script:while (1) {alert('hej');break javascript}">hej</button>
Avatar billede roenving Novice
28. december 2008 - 13:05 #38
Tjoeh, selvfølgelig har du ret, erik ...

-- problemet er nærmere, at det er en misforståelse, som er opstået udfra brugen af pseudo-protokollen i f.eks. href-attributten ...

-- og da netop det er udgangspunktet for brugen, og den, som du ganske rigtig skriver, er ganske overflødig og stort set kun er i vejen, må det være korrekt at advare mod brugen !-)
Avatar billede erikjacobsen Ekspert
28. december 2008 - 13:07 #39
Det kan påpeges ja, men at sige det er "noget vrøvl", og "advare", mener jeg er at overdrive problemet. Men skidt nu med det - i 2009 koder vi kun pænt og rigtigt. Ik'? :)
Avatar billede roenving Novice
28. december 2008 - 13:19 #40
Jepz *lol*
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