Avatar billede htx98i17 Professor
05. april 2006 - 19:40 Der er 17 kommentarer og
1 løsning

split efter tegn nr 2

Er der en der kan modificere denne funktion, således at der splittes efter tegn nr. 2 og ikke ved punktum eller semikolon.

<script language="javascript" >
       
            function beregn(obj) {
                var frm = obj.form;

                  var tidspunkt1 = frm.start.value;
                    var tidspunkt2 = frm.slut.value;
                   
                    var t1 = tidspunkt1.split(/[:\.]/);//del op med enten . eller :
                    var t2 = tidspunkt2.split(/[:\.]/);
                   
                    var tid1 = new Date();
                    var tid2 = new Date();
                   
                    tid1.setHours(t1[0]);
                    tid1.setMinutes(t1[1]);
                   
                    tid2.setHours(t2[0]);
                    tid2.setMinutes(t2[1]);
                   
                    var diff = Math.abs(tid1.getTime() - tid2.getTime());
                    var diffMin = Math.floor(diff / (1000*60));
                   
                    var diffMin2 = '' + diffMin/60;
                    var diffMin3 = diffMin2.replace('\.',',',diffMin2);
                   
                    frm.timer.value = diffMin3;
            }
           
        </script>
Avatar billede mclemens Nybegynder
05. april 2006 - 20:26 #1
sådan?

var t1 = tidspunkt1.split(tidspunkt1.charAt(1),1);
t1[t1.length]=tidspunkt1.substr(1);

var t2 = tidspunkt2.split(tidspunkt2.charAt(1),1);
t2[t2.length]=tidspunkt2.substr(1);
Avatar billede mclemens Nybegynder
05. april 2006 - 20:34 #2
fandt lige en fejl hvis de 2 første værdier i strengen var ens ville array'ets første værdi være lig ingenting for at undgå det har jeg rettet lidt scriptet:

var t1 = tidspunkt1.split(tidspunkt1.charAt(1),1);
if(t1[0]==""){t1=tidspunkt1.split(tidspunkt1.charAt(2),1)
t1[0]=t1[0].substr(-1,1);}
t1[t1.length]=tidspunkt1.substr(1);

var t2 = tidspunkt2.split(tidspunkt2.charAt(1),1);
if(t2[0]==""){t2=tidspunkt2.split(tidspunkt2.charAt(2),1)
t2[0]=t2[0].substr(-1,1);}
t2[t2.length]=tidspunkt2.substr(1);


... dette skulle hjælpe på problemet (7,9,13) :P


/*
//test:
for(rim=0;rim<t1.length;rim++){
alert("t1,"+rim+": "+t1[rim]);
for(rim=0;rim<t2.length;rim++){
alert("t2,"+rim+": "+t2[rim]);
*/
Avatar billede htx98i17 Professor
05. april 2006 - 20:37 #3
naa, den regner ikke rigtig :)
Avatar billede htx98i17 Professor
05. april 2006 - 20:38 #4
prøver den lige
Avatar billede htx98i17 Professor
05. april 2006 - 20:39 #5
den regner ikke rigtigt.
jeg indtaster eksempelvis 1000 som første værdi og 1200 som anden værdi.
det regner den ud til 3,333335
Avatar billede mclemens Nybegynder
05. april 2006 - 20:44 #6
efter tegn nr 2. istedet?
Avatar billede mclemens Nybegynder
05. april 2006 - 20:45 #7
hov nå ja, læste forkert...
Avatar billede htx98i17 Professor
05. april 2006 - 20:46 #8
det oprindelige script delte timer og minutter op med punktum eller semikolon.

eksempelvis 10.00 og 12.00
det giver 2 timer. (det er det scriptet udregner)

nu skal den kunne regne det samme ud, uden et tegn der adskiller timer og minutter
altså igen 1000 og 1200
skal give 2 timer
Avatar billede mclemens Nybegynder
05. april 2006 - 20:51 #9
kigger lige på det :P
Avatar billede mclemens Nybegynder
05. april 2006 - 20:56 #10
sådan ?

t1=new Array('','');
t1[0]=tidspunkt1.substr((tidspunkt1.length-2)*-1,2);
t1[1]=tidspunkt1.substr(2);

t2=new Array('','');
t2[0]=tidspunkt2.substr((tidspunkt2.length-2)*-1,2);
t2[1]=tidspunkt2.substr(2);
Avatar billede roenving Novice
05. april 2006 - 20:58 #11
Prøv bare at indsætte punktum eller kolon, eller også at oprette variablerne direkte som arrays:

  var tidspunkt1 = frm.start.value;
  var tidspunkt2 = frm.slut.value;

  var t1 = [tidspunkt1.substr(0,2),tidspunkt1.substr(2)];
  var t2 = [tidspunkt2.substr(0,2),tidspunkt2.substr(2)];
Avatar billede htx98i17 Professor
05. april 2006 - 20:59 #12
tak
til et svar
Avatar billede mclemens Nybegynder
05. april 2006 - 21:01 #13
roenving eller mig - eller begge?
Avatar billede mclemens Nybegynder
05. april 2006 - 21:03 #14
hehe, det var vist en snørklet måde jeg fik skrevet min på :D
roenvings er væsetnlig bedre :)
Avatar billede htx98i17 Professor
05. april 2006 - 21:04 #15
jeg har ikke nået at se roenvings svar - brugte mclemens og det virker. så pointene går til mclemens
Avatar billede mclemens Nybegynder
05. april 2006 - 21:06 #16
ok :)
Avatar billede htx98i17 Professor
05. april 2006 - 21:08 #17
tak for hjælpen

tak for din deltagelse roenving
Avatar billede mclemens Nybegynder
05. april 2006 - 21:10 #18
- takker for point :)


og tak for inputtet herfra også roenving :)
- nu fandt jeg også lige ud af at man kan angive
et array uden at definere det for sig selv først :)
samt rettet dem dumme måde jeg brugte substr på :)
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

IT-JOB