javascript - tryit - listview html



getElementsByTagName("table")-come arrivare in modo curioso (1)

Questo perché ti stai dimenticando dell'elemento <tbody> , che viene automaticamente inserito nel DOM.

Com'è veramente il tuo tavolo:

<table border="1px">
  <tbody>
    <tr> 
      <td> </td>
      <td> <input type="button" value="Click" onclick="insertText()"/> </td>
    </tr>
  </tbody>
</table>

Quindi perché hai bisogno di scavare attraverso tre livelli di bambini per indirizzare l'elemento <td> che volevi.

Nota a margine: se vuoi sapere di più sul perché l'elemento <tbody> viene automaticamente iniettato negli elementi <table> se non è dichiarato, vedi questa domanda e le sue risposte .

https://code.i-harness.com

Ho questo semplice esempio

 <table border="1px">
  <tr> 
    <td> </td>
    <td> <input type="button" value="Click" onclick="insertText()"/> </td>
  </tr>
 </table>

Volevo ottenere il primo elemento td del (primo) elemento tr, ho provato:

var td = document.getElementsByTagName("table")[0].children[0].children[0];

Perché è:

  • var td = document.getElementsByTagName("table")[0] per l'elemento table stesso
  • children[0] per l'elemento tr
  • e i children[0] nuovo per il primo elemento td

Questo è quello che pensavo, ma a quanto pare questo mi restituisce l'elemento tr e solo aggiungendo un altro .children[0] mi ha ottenuto l'elemento td.

var td = document.getElementsByTagName("table")[0].children[0].children[0].children[0];

Perché è questo o cosa mi è mancato qui?





html-table