28. august 2001 - 12:11Der er
48 kommentarer og 4 løsninger
Skift operator
Titlen giver næsten sig selv :-)
Jeg er gået lidt kold i mit forsøg på at lave nedenstående og så er det jo at http://www.eksperten.dk/kategori/20 er et glimrende sted. Jeg har 2 tal. Det jeg gerne vil er at kunne skifte mellem at plusse/minusse/gange/dividere ved klik på en knap.
Jeg kan godt lave 4 forskellige funktioner, men er af flere grunde mere interesseret i en løsning hvor man kan nøjes med at skifte operatoren ud.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Det er ikke så meget en knap der kan skifte jeg er ude efter. Det er simpelthen hvordan jeg laver selve funktionen. I det øjeblik nogen eller nogle kommer med metoden kan jeg selv lave resten. Har virkeligt spekuleret her, men er rimeligt blank...
Det der er hele humlen er at jeg har mange tal der skal bruge disse operatorer. Det jeg så er ude efter er at lave én funktion med operator skift fremfor flere funktioner med alle mulige konstallationer af operatorer.
Hvis jeg kunne scripte en operator ind ville det gøre det tusinde gange nemmere.
Jeg tror nemlig ikke du kommer ud over at lave en if/else sætning... selvom det andet lyder smart, tror jeg du kommer til at gøre det mere kompliceret som så ;-)
Problemet er at der skal være flere hundrede udregninger og hvis jeg ikke kan lave en samlet funktion der kan placere operatorene bliver det nok nemmest at smide hele formler ind :-(
I øvrigt skal der heller ikke være noget input - Det var kun for at kunne teste med flere tal.
pixelpaw >> Den forstår jeg ikke: 28/08 2001 17:05:19. Men lad os nu snart få nikolajdu på banen, så vi kan høre, hvad han kan finde ud af. Det er jo trods alt hans spm :) /mvh
ole, operatorString (fra geo eksempel) er sat til \"+\" men denne string skal være dynamisk alt efter hvad der måske er blevet trykket på af enten +,-,* eller /, det var bare det jeg mente :)
function plus ( a, b ){ return a+b }; function minus ( a, b ){ return a-b }; function gange ( a, b ){ return a*b }; function dele ( a, b ){ return a/b }; var udvalg = new Array( plus, minus, gange, dele );
var operator = plus;
function setOperator ( kode ) // 0=+ 1=- 2=* 3=/ if ( 0 <= kode && kode <= 3 ) operator = udvalg[kode]; };
</script>
nu kan du skifte operator med setOperator( 2 ); // bliver til gange og så gange alle de tal du vil med: resultat = operator( tal1, tal2 )
alternativt kan du nårsomhelst kalde resultat = udvalg[1]( tal1, tal2 ); // giver tal1-tal2
men det er vist kun nyttigt til nere fintede operatorer der ikke er indbygget i javascript. det er immervæk nemmere at skrive resultat = tal1 - tak2; // :-))
lingoman og pixelpaw >> I skal vist have pengene tilbage for jeres monitors. Noget tyder på de ikke kan vise bogstaverne \'j\', \'a\', \'k\', \'o\', \'b\' og \'a\'...og det er jo noget frygteligt roderi =o) /mvh
Dette er en funktion, der returnerer summen af de to tal \'a\' og \'b\': function plus( a, b ){ return a+b }; (Jeg kan nu bare ikke lide, at jakoba har lavet mellemrum mellem \'plus\' og parentesen).
Her sættes variablen \'operator\' - ved at sende 0, 1, 2 eller 3 med som argument: var udvalg = new Array( plus, minus, gange, dele ); var operator = plus;
function setOperator ( kode ) // 0=+ 1=- 2=* 3=/ if ( 0 <= kode && kode <= 3 ) operator = udvalg[kode]; };
Så kan du sætte \'operator\' til \'gange\' med: setOperator( 2 );
Når du har gjort det, kan du skrive: resultat = operator( tal1, tal2 ); ...og derved gange de to tal.........comprende? :) /mvh
Det er vist det med at javascript ikke virker i flash.
Men jeg troede egentlig at flash-sider havde både en html del (hvor javascript virker) og en flash-del hvor javascriptet udenfor kan kaldes med noget i retning af \"java script:setOperator(2);\".
Gik lige i kassen i går, så har ikke fået kigget på det.
Jakoba - Du har helt ret. JavaScript virker ikke i flash - Kun i browseren. Grunden til at jeg skrev til Ole og dig tidligere at en js løsning også kunne bruges, er at opbygningen af actionScript og js er nogenlunde den samme. Derfor tænkte jeg at det måtte være umiddelbart til at overføre.
Hele det her \"_root.\" tingeling angiver en absolut sti til variablen. Dette er i og for sig ligegyldigt, da beregningerne kommer til at ligge i tomme clip eller inkluderede actionScript filer (nogenlunde det samme som eksterne .js filer) hvor der altså ingen niveauer er i.
Da antallet af tal kan ændre sig fra 2 til måske 30 havde jeg selv umiddelbart forestillet mig en mere dynamisk løsning hvor tal plus operatorer blev lagt ind i en streng, der derefter blev søgt igennem, splittet op og evalueret. Princippet herfor er stort set det samme som i Js. Dog med den undtagelse at de andre tilsyneladende har fundet ud af at Eval() åbentbart ikke helt har samme funktion.
Har ikke rigtigt fået det til at virke efter hensigten og tvivler på at vil som jeg vil. Hvis nu bare eval() havde haft helt samme virkemåde i Flash såååå....
Paw - hvis du lige svarer så kan i få jer en deler :-)
Var lige ved at paste actionen ind her men kom i tanke om at det måske ikke var lovligt da jeg ikke har bedt om bokels tilladelse. Dog kan man downloade .as filen ved at følge linket for oven :o)
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.