Cho HTML dưới dạng chuỗi, Xpath và offset. Tôi cần làm nổi bật từ đó.Làm nổi bật khi HTML và Xpath được cung cấp
Trong trường hợp dưới đây, tôi cần phải làm nổi bật Child 1
văn bản HTML:
<html>
<body>
<h2>Children</h2>Joe has three kids:<br/>
<ul>
<li>
<a href="#">Child 1 name</a>
</li>
<li>kid2</li>
<li>kid3</li>
</ul>
</body>
</html>
XPATH như: /html/body/ul/li[1]/a[1]
Hiệu số: 0,7
Render - Tôi đang sử dụng react
trong tôi ứng dụng. Dưới đây là những gì tôi đã làm cho đến nay.
public render(){
let htmlText = //The string above
let doc = new DOMParser().parseFromString(htmlRender,'text/html');
let ele = doc.evaluate("/html/body/ul/li[1]/a[1]", doc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null); //This gives the node itself
let spanNode = document.createElement("span");
spanNode.className = "highlight";
spanNode.appendChild(ele);
// Wrapping the above node in a span class will add the highlights to that div
//At this point I don't know how to append this span to the HTML String
return(
<h5> Display html data </h5>
<div dangerouslySetInnerHTML={{__html: htmlText}} />
)
Tôi muốn tránh sử dụng jquery. Bạn muốn làm trong Javascript (React quá) nếu có thể!
Edit:
Vì vậy, nếu bạn nhận thấy những Render
chức năng nó được sử dụng dangerouslySetHTML
. Vấn đề của tôi là tôi không thể thao tác chuỗi đó được hiển thị.
Có thể chỉ là tôi, nhưng không rõ chính xác bạn cần làm gì? Bạn có cần phải sửa đổi giá trị của 'htmlText' trước khi đặt nó trong' dangerouslySetInnerHtml' không? – hazardous
Đây có phải là đoạn mã thực tế của bạn hay chỉ là một ví dụ? Rất nhiều thứ là khó hiểu ở đây, có 'công khai' trước khi render, sau đó bạn đang cố gắng lồng' html' bên trong một 'div'. Bạn có thể vui lòng chia sẻ mã hoàn chỉnh hơn không? git repo sẽ thích hợp hơn. – hazardous