?? ?摘自 http://hi.baidu.com/ashuy/blog/item/69a25f60327d96dd8cb10d0f.html
?? ?Firefox同樣支持W3C標準屬性,包括childNodes、firstChild、lastChild、nextSibling、 nodeName、nodeType、nodeValue、ownerDocument、parentNode和previousSibling。不幸的是,對于微軟專有的text和xml屬性,Firefox并不支持,不過可以利用其他方法來模擬該屬性的行為。
?? ?大家應該還記得,text屬性返回了當前節點的內容,或者是當前節點及其子節點的內容。這不僅僅返回當前節點的文本,還有所有子節點的文本,因此要模擬該功能實現是十分容易的。下面這個簡單的函數就能夠完成該功能,該函數唯一的參數是一個節點:
function getText(oNode) {
?? ?var sText = "";
?? ?for (var i = 0; i < oNode.childNodes.length; i++) {
?? ??? ?if (oNode.childNodes[i].hasChildNodes()) {
?? ??? ??? ?sText += getText(oNode.childNodes[i]);
?? ??? ?} else {
?? ??? ??? ?sText += oNode.childNodes[i].nodeValue;
?? ??? ?}
?? ????}
?? ?return sText;
}
?? ?在getText()函數中,sText變量用來保存獲取的所有文本。接著對oNode的子節點使用for循環進行遍歷,檢查每個子節點是否包含子節點。如果有子節點,那么就將其childNode傳給getText()函數,并進行同樣的處理;如果沒有子節點,那么將當前節點的nodeValue 加到字符串中(對文本節點而言,這只是文本字符串)。處理了所有子節點后,該函數返回變量sText。