28. januar 2010 - 11:24Der er
19 kommentarer og 1 løsning
Dynamisk variabel i feltnavn
Kan man kombinere en dynamisk variabel med et html feltnavn?
Jeg har en række felter, hvor den enste navnmæssig forskel er et afsluttende nummer f.eks. "_1" og "_2" osv.
Problemet er at antallet af felter også er dynamisk, så jeg kan ikke hardcode deres navne i scriptet.
I nedenstående er antal lig med det antal felter som jeg har, men da jeg også bruge det navnmæssigt, vil jeg gerne kunne kombinere denne variabel i html feltnavnet, hvis det kan lade sig gøre.
function beregnprocent(antal) { if (antal == 2) { document.ds.projektmedlem_antal_procent = "100"; } }
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Showsource -> Det er ikke lige det jeg er ude efter. Din kode generere elementerne i javsscript, ikke sandt? Jeg har dem allerede, og der skal laves alt for meget om, til at jeg vil bruge den løsning, som den første.
Kan se jeg også fik beskrevet det lidt forkert, men den grundlæggende ide er dog ens. Men jeg uddyber lige for god orden skyld.
Jeg har følgende html/php kode, hvor mine problematiske felter/elementer bliver lavet. Elementernes nummerering i navngivning er så ud fra rækkenummeret, i dette tilfælde, hvor mange projektmedlemmer jeg har på en specifik sag.:
Procent elementet vil jeg så have til ved onChange at beregne en procent fordeling, så hvis der indtastes 20 i projektmedlem_2_procent, bliver projektmedlem_1_procent udfyldt med 80.
Dertil ville jeg så bruge functionen
function beregnprocent(antal) { if (antal == 2) { var er = "document.ds.projektmedlem_"+antal+"_procent"; //document.ds.projektmedlem_"+antal+"_procent = "100"; } }
Men mit er problem er at jeg ikke lige kan finde ud af at få antal parameteren med i documents.ds.projektmedlem.....
Jeg kan ikke lige overskue din phpkode, men når siden vises, og du så bruger "vis kilde" i din browser, er det så som det skal være ? Altså værdien af $counter
Ja, alt html/php virker indtil videre, herunder også $counter
Det betyder at når der ikke er oprettet medlemmer på projektet, er der en række med felter til at vælge medlemmer og indtaste noget data.
Opdateres siden, viser den de tilknyttede medlemmer (i ovenstående tilfælde kun én) samt den "tomme" række, til indtastning af flere medlemmer.
Sådan fortsætter det i teorien med et uendeligt antal medlemmer, fordi man altid kan tilføje én mere.
Alle disse medlemmer skal så hver især tilføjes en procentsats, som samlet ikke må være over 100.
For at kunne beregne dette er min tænke, at jeg sender antallet af medlemmer over til javascriptet, der så skulle tage felt i hvert procent element, og lægge deres værdier sammen.
Mit problem er at jeg ikke kan fange elementerne da antallet jo kan være uendeligt. Jeg havde håber at jeg kunne noget lignede nedenstående.
function beregnprocent(antal) { //alert(antal); for(var i=1; i <= antal; i++) { //læg elementernes value sammen // a la document.ds.projektmedlem_'i'_procent + document.ds.projektmedlem_'i'_procent // = document.ds.projektmedlem_1_procent + document.ds.projektmedlem_2_procent } }
Alerten skriver det rigtige antal ud, så jeg får værdien overført til scriptet, jeg kan bare ikke få den lagt ind i elementnavnet.
Det forstår jeg ikke helt, tror vi taler forbi hinanden. Kan jeg fange $_POST["mitarray"] i javascript?
Det er reelt en ganske simpel beregning i javascript jeg skal lave, jeg kan bare ikke navngive elemeterne dynamisk i javascript så jeg kan fange dem.
Eks.: Jeg har 3 input elementer, ved onChange skal deres værdier lægges sammen og tjekkes om de samlet overstiger 100.
Problem: I en sag har jeg 1 element, i den næste 3, næste igen 100, næste igen 2, næste 21 osv. osv.
Fordi jeg ikke ved hvor mange elementer det drejer sig om, laver jeg dem dynamisk og navngiver dem dynamisk med et nummer. I javascript-funktionen som beregner skal jeg kunne tjekke alle felter. Hvordan gør jeg det?
Jeg kender strukturen på feltnavnene (projektmedlem_'et nummer'_procent), men problemet er at jeg ikke ved hvad "et nummer" er. Det symbolisere hvor mange felter jeg har og der det kan spænde fra 0-∞
Den skal lige tilpasses de forskellige fejlmuligheder, men jeg tror den er der.
Løsningen bliver at jeg sender et max antal til javascript funktionen, denne værdi kan jeg så bruge til at fange felterne med. For at fange felterne gør jeg følgende:
function beregnprocent(obj) { var res = 0; for (var i=1; i<=obj; i++) { res = res + parseInt(document.ds['projektmedlem_'+i+'_procent'].value); } if (res > 100 || res < 100) { alert("Den samlede procentfordeling giver ikke 100%"); } }
Showsource -> Var det, det du mente med at bruge []?
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.