2010-01-29 18 views
51

Sé que puede ser algo simple, pero no puedo entenderlo. Estoy tratando de insertar un texto proveniente de un evento onload de función de JavaScript en un td.Cómo insertar texto en un td con id, usando 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> 

¿Algún ayuda?

+0

asegurarse de que el segundo etiqueta es en realidad, y el mismo con la etiqueta de cierre. Tal vez eso sea solo un error cuando lo plantees, pero nunca se sabe. –

Respuesta

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

Tengo que tener en cuenta que es decir, <= 9 no te permiten hacer innerHTML para los elementos de la tabla – Denis

+0

@Denis ¿tienes alguna cita para eso? Esto se hizo para un elemento '' de la celda de la tabla no como una tabla entera o un elemento del cuerpo de la tabla. – artlung

+1

Bueno, admito mi error, innerHTML to td realmente funciona en ie9, pero todos los demás elementos de la tabla son de solo lectura http://stackoverflow.com/a/4729743/1221082 – Denis

4

Si su <td> no está vacío, un truco popular es para insertar un espacio duro &nbsp; en el mismo, de tal manera que:

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

Entonces usted será capaz de utilizar:

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

De lo contrario, si no desea agregar el &nbsp sin sentido, puede usar la solución que Jonathan Fingland describió en the other answer.

2

Uso jQuery

Mira lo fácil que sería si lo hizo.

Ejemplo:

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

No puedo usar JQuery, pero gracias. – Amra

+1

@Cesar ¿por qué no? – Gabe

+0

publicación anterior, pero aún así: nunca debes usar jquery para esas cosas tan fáciles. ni siquiera es menos código con jquery. – luschn

29

añada un nodo de texto de la siguiente manera

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

La característica importante de esta solución es que no destruye el contenido actual del elemento principal. – Pistos

13

Hay varias opciones ... suponiendo que encontrar su TD por var td = document.getElementyById('myTD_ID'); que puede hacer:

  • td.innerHTML = "mytext";

  • td.textContent= "mytext";

  • td.innerText= "mytext"; - éste puede no trabajar fuera de IE? No estoy seguro

  • Use la matriz firstchild o children como se indicó en el póster anterior.

Si es sólo el texto que necesita ser cambiado, textContent es más rápido y menos propenso a ataques XSS (https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent)

+0

Por alguna razón que obtengo Object no admite esta propiedad o método. Pero gracias de todos modos. – Amra

+0

¿Cuál de los 4? – DVK

+0

Cualquiera que esté precedido por getElement -> y <- ById. –

Cuestiones relacionadas