↑
Main Page
acceptNode
A
NodeFilter
object has only one method:
acceptNode()
, which returns
NodeFilter.FILTER_ACCEPT
if the given node should be visited or
NodeFilter.FILTER_REJECT
if the given node should not be vis-
ited. However, you cannot create an object using the class
NodeFilter
because it is an abstract class. In
Java or other languages, you must define a new subclass of
NodeFilter
, but because this is JavaScript
you can’t do that.
Instead, you just create an object with an
acceptNode()
method and pass that to the
createNodeIterator()
method, like this:
var oFilter = new Object;
oFilter.acceptNode = function (oNode) {
//filter logic goes here
};
To disallow
<p/>
element nodes, you just check the
tagName
property and return
NodeFilter.
FILTER_REJECT
if it’s equal to
“P”
:
var oFilter = new Object;
oFilter.acceptNode = function (oNode) {
return (oNode.tagName == “P”) ? NodeFilter.FILTER_REJECT :
NodeFilter.FILTER_ACCEPT;
};
If you include this in the previous example, the code becomes the following:
<html>
<head>
<title>NodeIterator Example</title>
<script type=”text/javascript”>
var iterator = null;
function makeList() {
var oDiv = document.getElementById(“div1”);
var oFilter = new Object;
oFilter.acceptNode = function (oNode) {
return (oNode.tagName == “P”) ?
NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;
};
iterator = document.createNodeIterator(oDiv,
NodeFilter.SHOW_ELEMENT, oFilter, false);
var oOutput = document.getElementById(“text1”);
var oNode = iterator.nextNode();
while (oNode) {
oOutput.value += oNode.tagName + “\n”;
oNode = iterator.nextNode();
}
}
186
Chapter 6
09_579088 ch06.qxd 3/28/05 11:37 AM Page 186
Free JavaScript Editor
Ajax Editor
©
→