Tôi muốn thêm phần tử vào một mã văn bản. Ví dụ: tôi có một hàm tìm kiếm chuỗi trong textNode của phần tử. Khi tôi tìm thấy nó, tôi muốn thay thế bằng một phần tử HTML. Có một số tiêu chuẩn cho điều đó không? Cảm ơn bạn.JavaScript: Thêm phần tử vào văn bảnNode
Trả lời
Bạn không thể thay thế chuỗi, bạn sẽ phải thay thế toàn bộ phần tử TextNode, kể từ TextNode elements can't contain child elements trong DOM.
Vì vậy, khi bạn tìm thấy nút văn bản của bạn, tạo ra yếu tố thay thế của bạn, sau đó thay thế các nút văn bản với một chức năng tương tự như:
function ReplaceNode(textNode, eNode) {
var pNode = textNode.parentNode;
pNode.replaceChild(textNode, eNode);
}
Đối với những gì nó xuất hiện bạn muốn làm, bạn sẽ phải phá vỡ tách Dòng văn bản hiện tại thành hai Nút văn bản mới và một phần tử HTML mới. Dưới đây là một số mã mẫu để cho bạn hy vọng đúng hướng:
function DecorateText(str) {
var e = document.createElement("span");
e.style.color = "#ff0000";
e.appendChild(document.createTextNode(str));
return e;
}
function SearchAndReplaceElement(elem) {
for(var i = elem.childNodes.length; i--;) {
var childNode = elem.childNodes[i];
if(childNode.nodeType == 3) { // 3 => a Text Node
var strSrc = childNode.nodeValue; // for Text Nodes, the nodeValue property contains the text
var strSearch = "Special String";
var pos = strSrc.indexOf(strSearch);
if(pos >= 0) {
var fragment = document.createDocumentFragment();
if(pos > 0)
fragment.appendChild(document.createTextNode(strSrc.substr(0, pos)));
fragment.appendChild(DecorateText(strSearch));
if((pos + strSearch.length + 1) < strSrc.length)
fragment.appendChild(document.createTextNode(strSrc.substr(pos + strSearch.length + 1)));
elem.replaceChild(fragment, childNode);
}
}
}
}
Có lẽ jQuery sẽ làm điều này dễ dàng hơn, nhưng rất tốt để hiểu tại sao tất cả nội dung này hoạt động theo cách đó.
Bạn có ví dụ nào không? Cảm ơn bạn. – thomas
- 1. JavaScript: Thêm trẻ em vào phần tử
- 2. Thêm văn bản vào trước hoặc sau phần tử HTML
- 3. Thay đổi giá trị văn bảnNode
- 4. Thêm các phần tử mới vào DOM bằng JavaScript (appendChild)
- 5. Cách thêm phần tử vào HTMLCollection trong javascript?
- 6. Thêm phần tử vào phần tử cuối cùng của mảng
- 7. Thêm phần tử vào đầu phần tử nhóm
- 8. Thêm biến vào các phần tử DOM
- 9. Thêm một MouseOverHandler vào một phần tử?
- 10. F # Thêm phần tử vào một chuỗi
- 11. GWT thêm ClickHandler vào phần tử DOM
- 12. Thêm lớp CSS vào phần tử giả
- 13. Thêm lớp học vào phần tử select2
- 14. Thêm lớp Css vào tất cả các phần tử <input type'text '>? Javascript/Css?
- 15. Chuyển đổi đầu vào văn bản thành phần tử chọn bằng JavaScript
- 16. Thêm các phần tử vào DOM cho HTML thuần văn bản chỉ sử dụng JavaScript thuần túy (không có jQuery)
- 17. Thêm văn bản vào vùng văn bản sử dụng javascript
- 18. jQuery: Thêm phần tử sau phần tử khác
- 19. QML, tự động thêm phần tử vào listview
- 20. Thêm chuỗi html vào DOM làm phần tử
- 21. Javascript để Jquery, thêm văn bản vào đầu vào onclick
- 22. Cách quan sát thêm phần tử vào mảng
- 23. jQuery - thêm các phần tử vào một mảng
- 24. Làm cách nào để thêm phần tử gốc vào một nhóm đoạn văn?
- 25. Trình duyệt cách trung lập để thêm tùy chọn vào phần tử được chọn trong javascript
- 26. JavaScript CSS cách thêm và xóa nhiều lớp CSS vào một phần tử
- 27. Thêm tùy chọn vào phần tử Chọn bằng javascript sử dụng thư viện Prototype
- 28. Thêm phần tử <script> vào DOM và chạy javascript?
- 29. Thêm thuộc tính (phần tử) mới vào đối tượng JSON bằng cách sử dụng JavaScript
- 30. Gắn thêm phần tử vào phần tử hiện có trong d3.js
Bạn có thể/bạn có muốn sử dụng jQuery không? –
Xin lỗi, tôi không thể. Nhưng BTW, hiển thị giải pháp của bạn cho những người khác ... – thomas
Bạn đã có chức năng tìm kiếm chuỗi hoặc bạn cũng đang hỏi về chuỗi đó? – palswim