Avatar billede hoppe11 Nybegynder
04. august 2009 - 20:51 Der er 6 kommentarer og
1 løsning

lægge 3 tal sammen

jeg er stødt ind i et yderst besynderligt problem.. eller det er slet ikke sikkert det er så besynderligt, men jeg forstår det i hvert fald ikke

jeg har et script som skal lægge 3 tal sammen, men det giver et helt vanvittigt stort tal.. tager jeg og alerter hver variabel hver for sig udskrives det rigtige tal, men så snart de lægges sammen bliver det flere hundrede tusinde!?

function add_tagelms(elm, event, img_width, img_height, id)
{
    elm = get_parent(elm, 'div');
   
    pos_x = event.offsetX ? event.offsetX:event.pageX-elm.offsetLeft;
    pos_y = event.offsetY ? event.offsetY:event.pageY-elm.offsetTop;
   
    var frame = tagelm_frame(elm);
    pos_tagelm(frame, pos_x, pos_y, img_width, img_height);
   
    var label = tagelm_label(elm);
    pos_tagelm(label, pos_x, pos_y+(frame.offsetWidth/2)+10, img_width, img_height);
   
    if(!id)
    {
        var adduser = tagelm_adduser(elm);
       
        var adduser_pad = 10;
        var frame_left = frame.style.left.split('px')[0];
        var adduser_left;
        if(pos_x > img_width/2) adduser_left = frame_left - adduser.offsetWidth - adduser_pad;
        else adduser_left = frame_left + adduser.offsetWidth + adduser_pad;
       
        alert(adduser_left);
       
        adduser.style.top = frame.style.top;
        adduser.style.left = adduser_left+'px';
    }
}

det er 'adduser_left' som jeg alerter hvor tallet bliver helt vildt... tog hvis 'if(pos_x > img_width/2)' er TRUE får jeg det rigtige tal

hjælp! :-/
Avatar billede hoppe11 Nybegynder
04. august 2009 - 21:03 #1
det er de samme 3 tal som bruges begge steder hvor de lægges sammen øverst og trækkes fra hinanden nederst.. den øverste giver det korrekte tal, men den nedereste giver et helt vanvittigt tal...!?

ændrer jeg +'erne til - i den nederste får jeg det rigtige tal som den øverste skulle udskrive...
Avatar billede hoppe11 Nybegynder
04. august 2009 - 21:16 #2
jeg har fundet ud af hvad der går galt, men aner ikke hvordan jeg undgår det?

sådan kunne mine 3 tal se ud:
93 192 10

- når de så bliver 'lagt sammen' i linje her:
else adduser_left = frame_left + adduser.offsetWidth + adduser_pad;

- bliver det til:
9319210

den sammensætter bare tallene!? hvordan kan det være det sker??

93 + 192 + 10 = 9319210
Avatar billede Slettet bruger
04. august 2009 - 21:21 #3
Et forsigtigt gæt, den behandler tallene som strenge i stedet for tal. Altså:
'1' + '1' + '1' = '111'

Prøv i stedet:
parseInt('1') + parseInt('1') + parseInt('1') = 3;
Avatar billede Slettet bruger
04. august 2009 - 21:22 #4
Nåh, du nåede selv at finde fejlen, men nu kom jeg i det mindste med løsningen :)
Avatar billede hoppe11 Nybegynder
04. august 2009 - 21:30 #5
nu får jeg fejl i linjen

else var adduser_left = parseint(frame_left) + parseint(adduser.offsetWidth) + parseint(adduser_pad);
Avatar billede hoppe11 Nybegynder
04. august 2009 - 21:34 #6
var frame_left = parseInt(frame.style.left.split('px')[0]);

det er her det går galt.. :)

tak for hjælpen og smid et svar :)
Avatar billede Slettet bruger
05. august 2009 - 01:08 #7
Gerne.
Jeg er glad for at det lykkedes for dig :)
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