2013-05-29 35 views
8

Say người ta,Chuyển đổi chuỗi HTML thành thành phần DOM?

var some_html = '<div class = "am_hold">' + 
    '<img name="bo_im" id="' + val.id + '" class="bookmark_image" src="' + val.favicon + '">' + 
    '<a target="_blank" name="bookmark_link" class="bookmark_link" href = "' + 
    val.url + '" id="' + val.id + '">' + val.title + '</a>' + 
    '<div><div class = "bookmark_menu"></div></div>' + 
    '</div>'; 

là nó có thể làm

var some_element = `some_function`(some_html); 

Có một thực hiện cho some_function (1) với bằng cách sử dụng một thư viện và (2) bằng cách sử dụng thư viện.

+0

'var d = document.createElement ('div'); d.innerHTML = some_html; '? –

+0

Thử thông tin này 'https: // developer.mozilla.org/vi-US/docs/Code_snippets/HTML_to_DOM' – Eldar

Trả lời

33

Tạo vùng chứa tạm thời cho HTML của bạn, sau đó lấy nội dung của nó. Một cái gì đó như:

var d = document.createElement('div'); 
d.innerHTML = some_html; 
return d.firstChild; 
+0

@ pure_code.com: ít dòng mã hơn không phải lúc nào cũng là phương pháp tốt nhất. Chỉ vì có thể có giải pháp một lớp, không có nghĩa là triển khai _best_. –

+0

@ pure_code.com: Nhưng không có. Bạn có thể đặt ba dòng đó vào một hàm nếu bạn muốn (* chỉnh sửa: * Bạn thực sự phải kể từ dòng cuối cùng là câu lệnh 'return'). Nếu bạn không biết cách xác định hàm: http://eloquentjavascript.net/chapter3.html. –

+0

Sau đó, chỉ cần dán nó vào phần thân của một hàm có tên là "some_function" và gọi nó. – mgw854

4

jQuery.parseHTML() - chức năng có thể giúp bạn.

http://api.jquery.com/jQuery.parseHTML/

+0

['jQuery.parseHTML'] (https://github.com/jquery/jquery/blob/master/src/core.js#L455-L480) chỉ là một phiên bản phức tạp hơn của [Câu trả lời của Kolink] (http://stackoverflow.com/a/16816777/298053). –

+0

Hy vọng câu trả lời này sẽ giúp bạn: http://stackoverflow.com/a/3104237/2335272 – DonnyDee

+0

@DonnyDee rằng câu trả lời sẽ chỉ hoạt động đối với HTML có giá trị XML (nghĩa là không phải tất cả HTML). –

5

Hãy thử đoạn code dưới đây

var myname = 'John Doe'; 

//This is using Jquery 
var htmltext = '<p style="color:red">'+myname+'This is a test</p>' 
$('#one').html(htmltext); 


//This is pure javascript 
document.getElementById('two').innerHTML='<p style="color:red">'+myname+'This is a test</p>'; 

JSfiddle link

Tôi đang xây dựng một chuỗi và phụ thêm nó vào một yếu tố html sử dụng html() chứ không phải là chức năng text(). Điều này sẽ được xử lý như là một thẻ HTML của trình duyệt và trao đổi những thay đổi trong giao diện người dùng như đã thấy trong fiddle.

+0

Đừng quên thêm lời giải thích cho mã của bạn cho những người có thể không quen thuộc với 'jQuery' hoặc' JavaScript'. –

+0

Mã JQUERY đó là hoàn hảo. Cảm ơn bạn! – BossWalrus

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