2010-01-29 33 views
51

Tôi biết nó có thể là một điều đơn giản, nhưng tôi không thể tìm ra. Tôi đang cố gắng để chèn một số văn bản đến từ một sự kiện onload chức năng JavaScript vào một td.Làm thế nào để chèn văn bản trong một td với id, sử dụng 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> 

Bất kỳ trợ giúp nào?

+0

Hãy chắc chắn rằng thứ hai thẻ thực sự là, và giống nhau với thẻ đóng. Có lẽ đó chỉ là một lỗi đánh máy khi bạn đặt nó vào câu hỏi, nhưng bạn không bao giờ biết. –

Trả lời

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

Tôi phải lưu ý rằng tức là <= 9 không cho phép bạn làm innerHTML cho các phần tử bảng – Denis

+0

@ Bạn có trích dẫn cho điều đó không? Điều này đã được thực hiện cho một phần tử ô ' 'không phải là một phần tử toàn bộ bảng hoặc bảng. – artlung

+1

Vâng, tôi thừa nhận sai lầm của tôi, innerHTML để td thực sự hoạt động trong ie9, nhưng tất cả các phần tử khác của bảng là chỉ đọc http://stackoverflow.com/a/4729743/1221082 – Denis

4

Nếu <td> của bạn không có sản phẩm nào, người ta lừa phổ biến là để chèn một khoảng trắng không bị phá vỡ &nbsp; trong nó, chẳng hạn rằng:

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

Sau đó, bạn sẽ có thể sử dụng:

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

Nếu không, nếu bạn không ưa thích việc thêm vô nghĩa &nbsp bạn có thể sử dụng giải pháp mà Jonathan Fingland mô tả trong the other answer.

2

Sử dụng jQuery

Nhìn cách dễ dàng sẽ là nếu bạn đã làm.

Ví dụ:

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

Không thể sử dụng JQuery, nhưng cảm ơn. – Amra

+1

@Cesar tại sao không? – Gabe

+0

bài cũ, nhưng vẫn: bạn không bao giờ nên sử dụng jquery cho những điều rất dễ dàng. nó thậm chí không ít mã với jquery. – luschn

29

nối thêm một nút văn bản như sau

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

Tính năng quan trọng của giải pháp này là nó không phá hủy nội dung hiện tại của phần tử gốc. – Pistos

13

Có một số tùy chọn ... giả sử bạn tìm thấy TD của bạn bằng cách var td = document.getElementyById('myTD_ID'); bạn có thể làm:

  • td.innerHTML = "mytext";

  • td.textContent= "mytext";

  • td.innerText= "mytext"; - một trong những điều này có thể không hoạt động bên ngoài trình duyệt IE? Không chắc chắn

  • Sử dụng đầu tiênBảng trẻ em hoặc trẻ em như áp phích trước đã lưu ý.

Nếu nó chỉ là văn bản mà cần phải được thay đổi, textContent là nhanh hơn và ít bị tấn công XSS (https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent)

+0

Vì một số lý do tôi nhận Object không hỗ trợ thuộc tính hoặc phương thức này. Nhưng dù sao cũng được. – Amra

+0

Cái nào trong số 4? – DVK

+0

Bất kỳ điều gì được bắt đầu bởi getElement -> y <- ById. –

Các vấn đề liên quan