04. december 2006 - 11:11
Der er
7 kommentarer og 1 løsning
getElementsByTagName på et textarea
Hejsa. Jeg har nogle getElementsByTagName hvor jeg finde "input" felter. Men jeg har osse et textarea.. id osv..passer fint men jeg tror det er fordi den jo ikke har en "value" som inputfelterne.. tbl.rows(nr).children[7].getElementsByTagName("textarea")[0].id = "service_text" + nr; Nogen ide om hvordan jeg får den til at ligne: tbl.rows(nr).children[6].getElementsByTagName("input")[0].id = "nom_time" + nr;
Annonceindlæg tema
04. december 2006 - 11:31
#1
Et textarea har da en value (godt nok ikke HTML-elementet, men DOM-elementet har - og det er jo DOM du arbejder med). Du er nok nød til at vise den HTML du arbejder på, ellers er det svært at se hvad der går galt (umiddelbart ser de to linier kode, du har vist, godt nok ud).
04. december 2006 - 12:04
#2
<script type="text/javascript"> function flyt(nr, vej) { c2 = nr + vej; tbl = document.getElementById("minTabel"); temp1 = new Array( tbl.rows(nr).children[2].innerHTML, tbl.rows(nr).children[3].innerHTML, tbl.rows(nr).children[4].innerHTML, tbl.rows(nr).children[5].innerHTML, tbl.rows(nr).children[6].innerHTML, tbl.rows(nr).children[7].innerHTML ); temp2 = new Array( tbl.rows(c2).children[2].innerHTML, tbl.rows(c2).children[3].innerHTML, tbl.rows(c2).children[4].innerHTML, tbl.rows(c2).children[5].innerHTML, tbl.rows(c2).children[6].innerHTML, tbl.rows(c2).children[7].innerHTML ); tbl.rows(nr).children[2].innerHTML = temp2[0]; tbl.rows(nr).children[3].innerHTML = temp2[1]; tbl.rows(nr).children[4].innerHTML = temp2[2]; tbl.rows(nr).children[5].innerHTML = temp2[3]; tbl.rows(nr).children[6].innerHTML = temp2[4]; tbl.rows(nr).children[7].innerHTML = temp2[5]; tbl.rows(c2).children[2].innerHTML = temp1[0]; tbl.rows(c2).children[3].innerHTML = temp1[1]; tbl.rows(c2).children[4].innerHTML = temp1[2]; tbl.rows(c2).children[5].innerHTML = temp1[3]; tbl.rows(c2).children[6].innerHTML = temp1[4]; tbl.rows(c2).children[7].innerHTML = temp1[5]; tbl.rows(nr).children[2].getElementsByTagName("input")[0].id = "citizen_id" + nr; tbl.rows(nr).children[3].getElementsByTagName("input")[0].id = "first_name" + nr; tbl.rows(nr).children[4].getElementsByTagName("input")[0].id = "last_name" + nr; tbl.rows(nr).children[5].getElementsByTagName("input")[0].id = "start_time" + nr; tbl.rows(nr).children[6].getElementsByTagName("input")[0].id = "nom_time" + nr; tbl.rows(nr).children[7].getElementsByTagName("textarea")[0].id = "service_text" + nr; tbl.rows(c2).children[2].getElementsByTagName("input")[0].id = "citizen_id" + c2; tbl.rows(c2).children[3].getElementsByTagName("input")[0].id = "first_name" + c2; tbl.rows(c2).children[4].getElementsByTagName("input")[0].id = "last_name" + c2; tbl.rows(c2).children[5].getElementsByTagName("input")[0].id = "start_time" + c2; tbl.rows(c2).children[6].getElementsByTagName("input")[0].id = "nom_time" + c2; tbl.rows(c2).children[7].getElementsByTagName("textarea")[0].id = "service_text" + c2; } </script> Og så længere nede.. <table cellspacing="4" cellpadding="0" id="minTabel"> <? $i=0; while ($row = mysql_fetch_assoc($res)) { echo " <form name=push_citizen action=".$_SERVER[PHP_SELF]." method=post> <tr> <td> <input type=submit name=push_citizen value='<-'> </td> <td> ".(($i > 0) ? "<a href='#' onClick='flyt($i, -1); return false;'>Op</a>" : " " )." ".(($i < $row_num-1) ? "<a href='#' onClick='flyt($i, 1); return false;'>Ned</a>" : " " )." </td> <td> <input type=hidden id=citizen_id$i name=citizen_id value='$row[c_id]'> </td> <td> <input type=text id=first_name$i name=first_name value='$row[c_first_name]'> <input type=text id=last_name$i name=last_name value='$row[c_last_name]'> </td> <td> <input type=text id=start_time$i name=start_time value='".date("H:i", strtotime($row[start_time]))."'> </td> <td> <input type=text id=nom_time$i name=nom_time value='".date("H:i", strtotime($row[nom_time]))."'> </td> <td> <textarea id=service_text$i name=service_text>$row[service_text]</textarea> </td> </tr> </form> "; $i++; } // end while ?> </table>
04. december 2006 - 13:02
#3
<ole> Hverken 'children' eller 'innerHTML' er valid DOM-kode. Du kan heller ikke bruge udtryk som: ELEMENT.id = "citizen_id" + nr; I DOM hedder det: ELEMENT.setAttribute("id", "citizen_id" + nr); Sålænge du bruger HTML-DOM, kan du i stedet for 'children' bruge cells-collection'en - på samme måde, som du bruger 'rows' ... f.eks: tbl.rows(nr).cells(2).getElementsByTagName("input")[0].setAttribute("id", "citizen_id" + nr); Til gengæld er jeg i tvivl om, hvad det er, du ikke kan få til at virke =) /mvh </bole>
04. december 2006 - 13:07
#4
Du refererer children[7], men der er kun 6 celler... kan det være fordi at fornavn og efternavn ligger i samme celle og din indeksering derfor ikke passer med den faktiske placering af dit textarea...? koden skulle altså være: tbl.rows(nr).children[2].getElementsByTagName("input")[0].id = "citizen_id" + nr; tbl.rows(nr).children[3].getElementsByTagName("input")[0].id = "first_name" + nr; tbl.rows(nr).children[3].getElementsByTagName("input")[1].id = "last_name" + nr; tbl.rows(nr).children[4].getElementsByTagName("input")[0].id = "start_time" + nr; tbl.rows(nr).children[5].getElementsByTagName("input")[0].id = "nom_time" + nr; tbl.rows(nr).children[6].getElementsByTagName("textarea")[0].id = "service_text" + nr; tbl.rows(c2).children[2].getElementsByTagName("input")[0].id = "citizen_id" + c2; tbl.rows(c2).children[3].getElementsByTagName("input")[0].id = "first_name" + c2; tbl.rows(c2).children[3].getElementsByTagName("input")[1].id = "last_name" + c2; tbl.rows(c2).children[4].getElementsByTagName("input")[0].id = "start_time" + c2; tbl.rows(c2).children[5].getElementsByTagName("input")[0].id = "nom_time" + c2; tbl.rows(c2).children[6].getElementsByTagName("textarea")[0].id = "service_text" + c2;
04. december 2006 - 13:07
#5
...og så altså med de rettelser som olebole lige har påpeget :)
04. december 2006 - 13:51
#6
den med antal celler.. den virkede.. tilføjede en td og så... Men jeg kan godt se at olebole´s kommentar er rigtig.. så måske skulle jeg se at få lavet lidt om således at det bliver gode rare ting [tm] ;-)
04. december 2006 - 14:19
#7
Betyder det så at du vil have et svar...? :) Det har du i det mindste fået nu ;-)
04. december 2006 - 22:23
#8
Tak for point :)
Vi tilbyder markedets bedste kurser inden for webudvikling