2010-01-29 18 views
51

So che potrebbe essere una cosa semplice, ma non riesco a capirlo. Sto cercando di inserire del testo proveniente da un evento onload della funzione JavaScript in un td.Come inserire testo in un td con id, utilizzando JavaScript

<html> 
<head> 
    <script type="text/javascript"> 
    function insertText() 
    { 
     //function to insert any text on the td with id "td1" 
    } 
    </script> 
</head> 
<body onload="javascript:insertText()"> 
    <table> 
    <tr> 
    <td id="td1"> 
    </td> 
    </tr> 
    </table> 
</body> 
</html> 

Qualsiasi aiuto?

+0

assicurarsi che il secondo tag è in realtà, e lo stesso con il tag di chiusura. Forse è solo un refuso quando lo metti nella domanda, ma non lo sai mai. –

risposta

61
<html> 

<head> 
<script type="text/javascript"> 
function insertText() { 
    document.getElementById('td1').innerHTML = "Some text to enter"; 
} 
</script> 
</head> 

<body onload="insertText();"> 
    <table> 
     <tr> 
      <td id="td1"></td> 
     </tr> 
    </table> 
</body> 
</html> 
+0

Devo notare che cioè <= 9 non ti permettono di fare innerHTML per gli elementi della tabella – Denis

+0

@Denis hai una citazione per questo? Questo è stato fatto per l'elemento '' di una tabella non un intero elemento di tabella o di tabella. – artlung

+1

Beh, ammetto il mio errore, innerHTML to td funziona davvero in ie9, ma tutti gli altri elementi della tabella sono di sola lettura http://stackoverflow.com/a/4729743/1221082 – Denis

4

Se il <td> non è vuoto, un trucco popolare è quello di inserire uno spazio unificatore &nbsp; in essa, in modo tale che:

<td id="td1">&nbsp;</td> 

Allora si sarà in grado di utilizzare:

document.getElementById('td1').firstChild.data = 'New Value'; 

Altrimenti, se non hai voglia di aggiungere l'insignificante &nbsp puoi usare la soluzione che Jonathan Fingland ha descritto in the other answer.

2

Usa jQuery

Guardate quanto facile sarebbe se hai fatto.

Esempio:

$('#td1').html('hello world'); 
+1

Non posso usare JQuery, ma grazie. – Amra

+1

@Cesar perché no? – Gabe

+0

vecchio post, ma ancora: non dovresti mai usare jquery per quelle cose molto semplici. non è nemmeno meno codice con jquery. – luschn

29

aggiungere un nodo di testo come segue

var td1 = document.getElementById('td1'); 
var text = document.createTextNode("some text"); 
td1.appendChild(text); 
+2

L'importante caratteristica di questa soluzione è che non distrugge il contenuto corrente dell'elemento genitore. – Pistos

13

Ci sono diverse opzioni ... supponendo che hai trovato la tua TD da var td = document.getElementyById('myTD_ID'); si può fare:

  • td.innerHTML = "mytext";

  • td.textContent= "mytext";

  • td.innerText= "mytext"; - questo non può funzionare al di fuori di IE? Non sicuro

  • Utilizzare la matrice firstChild o children come indicato in precedenza.

Se è solo il testo che deve essere cambiato, textContent è più veloce e meno soggetto ad attacchi XSS (https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent)

+0

Per qualche motivo ottengo Object non supporta questa proprietà o questo metodo. Ma grazie comunque. – Amra

+0

Quale dei 4? – DVK

+0

Qualsiasi preceduto da getElement -> y <- ById. –

Problemi correlati