Avatar billede bigo Nybegynder
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;
Avatar billede softspot Forsker
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).
Avatar billede bigo Nybegynder
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>" : "&nbsp;" )."
                            ".(($i < $row_num-1) ? "<a href='#' onClick='flyt($i, 1); return false;'>Ned</a>" : "&nbsp;" )."
                        </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>
Avatar billede olebole Juniormester
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>
Avatar billede softspot Forsker
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;
Avatar billede softspot Forsker
04. december 2006 - 13:07 #5
...og så altså med de rettelser som olebole lige har påpeget :)
Avatar billede bigo Nybegynder
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] ;-)
Avatar billede softspot Forsker
04. december 2006 - 14:19 #7
Betyder det så at du vil have et svar...? :)

Det har du i det mindste fået nu ;-)
Avatar billede softspot Forsker
04. december 2006 - 22:23 #8
Tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester