Надеюсь, я смогу спросить об этом в понятной форме ...
В целом, я пытаюсь определить, с каким типом объекта я сейчас имею дело.
Я создаю коллекцию(HTML является примером, а не буквальным), и мне нужно отфильтровать мою коллекцию по определенным элементам, например:
<div id="tabContentWrap">
<div id="tab">
<a href="http://somelink">Link Element</a><img src="img.jpg" alt="img" />
<select id="my_select"><option value="1">1</option></select>
</div>
</div>
function getFilteredElements() {
var tabContent = getElementsByClass("tabContentWrap", document.getElementById(tabWrapId), "div");
for (var j = 0; j < tabContent.length; j++){
tabContentLinks = tabContent[j].getElementsByTagName('*');
for (var k = 0; k < tabContentLinks.length; k++){
// Here i attempt to filter the collection
if (tabContentLinks[k] == '[object HTMLSelectElement]') {
alert("found select list");
}
}
}
}
, которая прекрасно работает в Mozilla, но не в Internet Explorer 8, tabContentLinks[k]
возвращает [object]
вместо[object 'ObjectType']
Итак, я исследовал и обнаружил, что вы можете использовать Object.prototype.toString.call(object)
для получения типа объекта, который снова прекрасно работает в Mozilla, но возвращает [object Object]
в IE8 ...
Iвызов
get_type(tabContentsLink[k]);
, который выполняет следующую функцию:
function get_type(thing){
if (thing === null) return "[object Null]";
// special case
return Object.prototype.toString.call(thing);
}
Но это просто возвращает [object Object]
Возвращает ли Object.prototype.toString.call()
тип объекта в IEили я очень далеко и лаю фонарный столб вместо дерева?