Question: I have the following code which seems to work fine in all browsers except IE8 and below.

```
$("table.availability").each( function() {
    var siteName = $(this).parent().siblings("h2").contents().filter(function() { return this.nodeType == Node.TEXT_NODE; }).text()
    alert(sitename);
});

```

It gets the content of an element and strips out everything contained within a child element just leaving the text of that element.

The error I get says that `Node` is undefined - so I declare it at the top of the js file and then get the same message about `TEXT_NODE` so I declare that. I then get the following error:

`Unable to get property 'TEXT_NODE' of undefined or null reference`

Can anyone help me to fix this or can anyone think of a better way to get the same result. Thanks.

Answer: 
The `TEXT_NODE` constant has a [value of 3](http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-1950641247). You can just use that:

```
return this.nodeType === 3;

```

Older versions of IE just don't implement the `Node` interface, but they do still follow the DOM spec and assign the correct `nodeType` property values.

If you want to use the "constant", you can declare a `Node` object yourself:

```
var Node = Node || {
    ELEMENT_NODE: 1,
    ATTRIBUTE_NODE: 2,
    TEXT_NODE: 3
    // etc... if you might need other node types
};

```
I'm guessing that you're structure is something like this:

```
<h2>
    text to filter
    <span>other text</span>
</h2>

```

And you're trying to filter out the "other text" inside h2?
If so - why not add another tag wrapper around the text that you need, e.g.

```
<h2>
    <span class="text-to-filter">text to filter</span>
    <span>other text</span>
</h2>

```

and do that:

```
$(this).parent().siblings("h2").find('.text-to-filter').text()

```