27. april 2006 - 10:29
Der er
17 kommentarer og 1 løsning
Løb alle input felters name igennem, der indeholder en stren
Jeg har behov for at lave en funktion, der fx. kan løbe hele DOM igennem på en side, og finde alle de input felter, hvori en streng indgår i enten navnet eller id (jeg ved ikke, hvad der er nemmest), også returnere alle de værdier, der står i felterne i et array. Jeg forestiller mig at jeg først får fat i alle input felterne, og derefter spørger dem om en streng indgår i deres id, hvis ja, så placere værdien af feltet i en array. Er der nogen, der kam hjælpe?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
27. april 2006 - 10:49
#1
Noget lignende (ganske utestet og sikkert med fejl (: ) var streng = 'navn_'; var felter = document.getElementsByTagname('input'); var vaerdier = new Array(); for(i=0;felter.length>i;i++) { if (felter[i].type == 'text') { if (felter[i].id.indexOf(streng)>0) { vaerdier[] = felter[i].value; } } }
27. april 2006 - 11:04
#2
<script type="text/javascript"> var oInputFieldsFound function searchFormById( sFormId, sSearch ){ oInputFieldsFound = new Array() var oForm = document.getElementById(sFormId) var aInputFields = oForm.getElementsByTagName('input') for( var i=0; i < aInputFields.length;i++){ var currentObj = aInputFields[i] if ( currentObj.type == "text" ) { if ( currentObj.id && currentObj.value != ""){ if ( currentObj.value.indexOf(sSearch) != -1) oInputFieldsFound[oInputFieldsFound.length] = currentObj } } } checkSearch() } function checkSearch(){ var sAlert = "" for( var i=0; i<oInputFieldsFound.length;i++){ sAlert += " Input felt med id [" + oInputFieldsFound[i].id + "] value = " + oInputFieldsFound[i].value + "\n" } alert(sAlert) } </script> <form id="test"> id="input_01" : <input type="text" id="input_01"><br> id="input_abe": <input type="text" id="input_abe"><br> id="input_02": <input type="text" id="input_02" value="input_02"><br> id=undefined: <input type="text" name="halo" value="halo"><br> id="input_03": <input type="text" id="input_03" value="input_03_abe"><br> id=undefined: <input type="text" name="halo" value="halo"><br> id=undefined: <input type="text" name="medtagikke" value="abe medtagikke abe abe"><br> id="medtag": <input type="text" id="medtag" name="medtag" value="asdfabeABR"><br> <br> <input type="button" onClick="searchFormById('test', 'input')" value="søg efter 'input'"><br> <input type="button" onClick="searchFormById('test', 'abe')" value="søg efter 'abe'"> </form>
27. april 2006 - 11:05
#3
well ovenstående søger i indhold i value men kan rettes til at søge på entent id eller navn :)
27. april 2006 - 11:17
#4
Jeg prøver og giver points efterfølgende, hvis jeg kan får det til at virke :o)
27. april 2006 - 11:22
#5
hmmm. Det er ikke værdien i feltet jeg tester med en streng, men jeg skal bare have alle de felter, hvis id indeholder strengen. fx var streng = "abe"; <input id="abe1" name="abe1" value ="0" ..... /> Giv mig alle input felter, hvor id er noget med abe, eller hvis det er besværligt, så giv mig værdien
27. april 2006 - 11:23
#6
Hov, jeg kan se i koden at det er netop det du gør....prøver lige at teste igen....
27. april 2006 - 11:25
#7
Hmmm, det ser lidt stort ud, kan du fortælle mig hvordan jeg kan finde alle de input felter, hvori en streng indgår i id?
27. april 2006 - 11:27
#8
Ahh det kan jeg se at du gør her -> if ( currentObj.value.indexOf(sSearch) != -1) oInputFieldsFound[oInputFieldsFound.length] = currentObj
27. april 2006 - 11:32
#9
prøv at rette dette til: if ( currentObj.id && currentObj.value != ""){ if ( currentObj.value.indexOf(sSearch) != -1) oInputFieldsFound[oInputFieldsFound.length] = currentObj } til ... if ( currentObj.id || currentObj.name ){ if ( currentObj.id && currentObj.id.indexOf(sSearch) != -1){ oInputFieldsFound[] = currentObj } else if ( currentObj.name && currentObj.name.indexOf(sSearch) != -1) ){ oInputFieldsFound[] = currentObj } }
27. april 2006 - 11:33
#10
eller blot if ( currentObj.id && currentObj.id.indexOf(sSearch) != -1){ oInputFieldsFound[] = currentObj } else if ( currentObj.name && currentObj.name.indexOf(sSearch) != -1) ){ oInputFieldsFound[] = currentObj }
27. april 2006 - 11:36
#11
Istedet for currentobj.value skal jeg spørge på id, hvordan gør jeg det??
27. april 2006 - 11:39
#12
Okay, kan se at du har smidt flere forslag ind...prøver lige...
27. april 2006 - 11:53
#13
Hmm der var en fejl dvs. at hvis id eksiterer men ikke indholder strengen så medtages elementet ikke - nedenstående checker for om strenge eksisterer i ENTEN id eller name bMatch = false if ( currentObj.id && currentObj.id.indexOf(sSearch) != -1) bMatch = true if ( currentObj.name && currentObj.name.indexOf(sSearch) != -1) ) bMatch = true if ( bMatch ) oInputFieldsFound[] = currentObj
27. april 2006 - 11:56
#14
okay, jeg kan se at jeg kun har behov for bruge id.
27. april 2006 - 12:05
#15
Kan man filtrere nogle fra??? Fx er jeg ikke interesseret i de felter hvor min streng indgår, hvori strengen 'Total' også indgår.
27. april 2006 - 12:06
#16
Kort sagt ligsom sql Where streng = 'abe' and streng <> 'Total'
27. april 2006 - 12:48
#17
Jeg fik løst det sidste :o). Tak for hjælpen.
27. april 2006 - 14:10
#18
superduper :o)
Vi tilbyder markedets bedste kurser inden for webudvikling