2010-11-21 33 views
12

Điều tôi muốn làm là tạo chuỗi từ đối tượng HTMLElement HTML. Ví dụ:Tạo chuỗi từ HTMLDivElement

var day = document.createElement("div"); 
day.className = "day"; 
day.textContent = "Random Text"; 

Bây giờ chúng tôi đã tạo ra đối tượng HTML2 có thể làm cho nó in dưới dạng chuỗi? ví dụ.

<div class="day">Random Text</div> 

Trả lời

17

Biến thể trên trình bao bọc của Gump, kể từ khi triển khai của anh ta nâng nút đích ra khỏi tài liệu.

function nodeToString (node) { 
    var tmpNode = document.createElement("div"); 
    tmpNode.appendChild(node.cloneNode(true)); 
    var str = tmpNode.innerHTML; 
    tmpNode = node = null; // prevent memory leaks in IE 
    return str; 
} 

Để in chuỗi kết quả trên màn hình (re: thoát)

var escapedStr = nodeToString(node).replace("<" , "&lt;").replace(">" , "&gt;"); 
outputNode.innerHTML += escapedStr; 

Lưu ý, các thuộc tính như "lớp học", "id", vv được chuyển đổi thành chuỗi đúng là có vấn đề.

+0

Đơn giản nhưng hiệu quả, chỉ là những gì tôi đang tìm kiếm. Một điều đáng tiếc là phương thức bên ngoàiHTML không được Firefox hỗ trợ. Cảm ơn –

1

Tại sao bạn sử dụng createElement nếu bạn cũng có thể phân tích cú pháp chuỗi trực tiếp? Giống như: var string = '<div class="' + class + '">' + text + '</div>';

+0

Rất nhiều lý do tại sao op có thể cần phải làm điều này ... như tôi. – Madbreaks

2

Bạn cần phải tạo nút văn bản để thêm văn bản cho các phần tử tạo của bạn như thế này:

var day = document.createElement("div"); 
day.className = "day"; 
// create text node 
var txt = document.createTextNode('Random Text'); 
// add text to div now 
day.appendChild(txt); 
// append to body 
document.body.appendChild(day); 
12

Bạn có thể sử dụng chức năng này (lấy từ pure.js)

function outerHTML(node){ 
return node.outerHTML || new XMLSerializer().serializeToString(node); 
} 
5

Bạn có thể bọc phần tử đó vào phần tử khác và sử dụng innerHTML trên đó:

var wrapper = document.createElement("div"); 
wrapper.appendChild(day); 
var str = wrapper.innerHTML; 
Các vấn đề liên quan