Thuộc tính previousSibling của XML DOM
Định nghĩa và cách sử dụng
previousSibling
Thuộc tính trả về nút trước đó ngay cạnh nút (nút sau cùng ở cùng cấp trong cây).
Nếu không tồn tại nút như vậy, thuộc tính này sẽ trả về null.
Cú pháp
nodeObject.previousSibling
Lưu ý:Firefox và hầu hết các trình duyệt khác sẽ coi khoảng trống hoặc dòng mới là nút văn bản, trong khi Internet Explorer không. Trong ví dụ sau, chúng ta sẽ sử dụng một hàm để kiểm tra loại nút của nút cùng cấp trước đó.
Nút điểm yếu của phần tử có nodeType là 1, vì vậy nếu nút cùng cấp trước đó không phải là nút phần tử, hãy di chuyển đến nút tiếp theo và kiểm tra nút đó có phải là nút phần tử hay không. Điều này sẽ tiếp tục cho đến khi tìm thấy nút cùng cấp trước đó (phải là nút phần tử). Như vậy, kết quả sẽ đúng trên tất cả các trình duyệt.
Lưu ý:Để biết thêm thông tin về sự khác biệt giữa các trình duyệt, hãy truy cập phần DOM Browser trong Giáo trình XML DOM.
Mô hình
Ví dụ 1
Mã dưới đây sẽ tải "books.xml" vào xmlDoc và lấy nút con cùng cấp trước của phần tử <author> đầu tiên:
var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myFunction(this); } }; xhttp.open("GET", "books.xml", true); xhttp.send(); // Kiểm tra nút con cùng cấp trước có phải là nút phần tử không function get_previoussibling(n) { var x = n.previousSibling; while (x.nodeType != 1) { x = x.previousSibling; } return x; } function myFunction(xml) { var xmlDoc = xml.responseXML; var x = xmlDoc.getElementsByTagName("author")[0]; var y = get_previoussibling(x); document.getElementById("demo").innerHTML = x.nodeName + " = " + x.childNodes[0].nodeValue + "<br>Em cùng cấp trước: " + y.nodeName + " = " + y.childNodes[0].nodeValue; }
Ví dụ 2
Lấy nút con cùng cấp tiếp theo của nút:
var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myFunction(this); } }; xhttp.open("GET", "books.xml", true); xhttp.send(); // Kiểm tra nút con tiếp theo cùng cấp có phải là nút phần tử không function get_nextsibling(n) { var x = n.nextSibling; while (x.nodeType != 1) { x = x.nextSibling; } return x; } function myFunction(xml) { var xmlDoc = xml.responseXML; var x = xmlDoc.getElementsByTagName("title")[0]; var y = get_nextsibling(x); document.getElementById("demo").innerHTML = x.nodeName + " = " + x.childNodes[0].nodeValue + "<br>Next sibling: " + y.nodeName + " = " + y.childNodes[0].nodeValue; }