все работает. может у вас на элементах навешано более одного класса, и поэтому они не попадают в итоговый массив?
<html>
<head>
<script type="text/javascript">
window.onload=function(){
Object.prototype.getParents = function (exception) {
var tmp = [], r = (this instanceof Array ? this[0] : this).parentNode;
while(r.parentNode) {
tmp.push(r),
r = r.parentNode;
}
if (exception) {
var x = [];
for (var i = 0; i < tmp.length; i++) {
if (exception(tmp[i])) {
x.push(tmp[i]);
}
}
tmp = x;
}
return tmp;
};
var q=document.getElementById('q').getParents(function (a) {
return a.tagName == 'BODY'; // Выбираем только элементы с классом myClass
});
alert(q);
}
</script>
</head>
<body>
<div id="q" ></div>
</body>
</html>