19. december 2006 - 10:48
Der er
7 kommentarer
function med elementbyname
Jeg har denne function som skal lægge "1" til eller trække "1" fra en given inputboks. jeg har så en plus og minus knap ud for hver input boks. det virker fint hvis jeg lave følgende onclick="document.form.felt1.value++;" for hver eneste felt op og ned. men da jeg gerne vil optimere det lidt ville jeg kalde nedenstående funktion med onclick="action(felt1, 1)" men får en fejl der siger at objektet understøtter ikke denne handling, hvad gør jeg forkert? function action(field, event){ if (event == 0){ document.getElementByName("field").value--; } else if (event == 1) { document.getElementByName("field").value++; } }
Annonceindlæg fra Novataris
19. december 2006 - 11:25
#1
function action(field, event) { if (event == 0) { document.getElementByName(field).value--; } else if (event == 1) { document.getElementByName(field).value++; } }
19. december 2006 - 13:26
#2
<ole> Næææhh - metoden hedder 'getElementsByName'! Her er s'et meget vigtigt, da der jo returneres et array af elementer - og der derfor også skal udvælges ét af dem ;o) function action(field, event) { if (event == 0) { document.getElementsByName(field)[0].value--; } else if (event == 1) { document.getElementsByName(field)[0].value++; } } /mvh </bole>
19. december 2006 - 13:29
#3
Men du kunne jo også slanke din funktion lidt: function action(field, event) { document.getElementsByName(field)[0].value += event; } - og så kalde med f.eks: onclick="action('gnu', 1)" - eller: onclick="action('gnu', -1)" - alt efter, om der skal tælles op eller ned =)
19. december 2006 - 13:31
#4
Dog skal du passe på! For at være helt sikker på, feltets værdi tolkes som et tal - og ikke som en tekststreng - bør du faktisk skrive: function action(field, event) { var val = document.getElementsByName(field)[0].value * 1; document.getElementsByName(field)[0].value = val + event; }
21. december 2006 - 11:09
#5
jeg får desværre stadig fejlen med at "objektet ikke understøtter denne handling" se f.eks denne kode: <script language="JavaScript"> function action(field, event) { var val = document.getElementByName(field)[0].value; document.getElementsByName(field)[0].value = val + event; } </script> <form name="skema"> <table> <tr> <td><span class="style1">felt 1</span></td> <td><input class="input" name="felt1" type="text" value="0" size="3" maxlength="3" readonly></td> <td><input type=button class="up" accesskey="b" onClick="action(felt1,1);" ondblClick="action('felt1', 1);"></td> <td><input type="button" class="down" onClick="action('felt1', -1)" ondblClick="action('felt1', -1)"></td> </tr> </TABLE> </form>
21. december 2006 - 13:01
#6
Du er nu heller ikke god til at skrive af =) <script type="text/JavaScript"> function actions(field, event) { var val = document.getElementsByName(field)[0].value * 1; document.getElementsByName(field)[0].value = val + event; } </script> <form name="skema"> <table> <tr> <td><span class="style1">felt 1</span></td> <td><input class="input" name="felt1" type="text" value="0" size="3" maxlength="3" readonly></td> <td><input type=button class="up" accesskey="b" onClick="actions('felt1',1);" ondblClick="actions('felt1', 1);"></td> <td><input type="button" class="down" onClick="actions('felt1', -1)" ondblClick="actions('felt1', -1)"></td> </tr> </TABLE> </form> - og så har jeg ændret funktionens navn, da 'action' jo er reserveret i JS =)
22. december 2006 - 14:44
#7
Så virker det bare, jeg prøvede flere muligheder også med "value * 1" det der gav fejlen var navnet action, Mange tak for hjælpen! Læg et svar til point.
Vi tilbyder markedets bedste kurser inden for webudvikling