jQuery(document).ready(function($) {
console.log('here');
// Profile Selector
// Get all the big profile elements listed above.
// Transform the result of `getElementsByTagName` from a NodeList
// to an Array. Just good practice, really.
var profileWrapper = document.getElementById('profileWrapper');
var bigElements = Array.prototype.slice.call(
profileWrapper.getElementsByTagName('div')
);
// Find an element in the `bigElements` array above that
// has a className that contains the `id` argument.
function selectBigElement( id ) {
// loop thru all the elements in `bigElements`, and...
for( var i = 0; i < bigElements.length; ++i ) {
// ... if the current element's className contains the
// query string argument (`id`), then show it...
if( ~bigElements[i].className.indexOf( id ) ) {
bigElements[i].style.display = 'block';
}
// ... Otherwise, hide it.
else {
bigElements[i].style.display = 'none';
}
}
};
$('.mini_profile').mouseover(function(event) {
selectBigElement(this.id);
});
selectBigElement( 179 );
});
答案 0 :(得分:2)
从查看代码开始,您将使用一些不受支持的方法:
Array.prototype.slice.call(profileWrapper.getElementsByTagName('div'));
这会尝试将NodeList
转换为Array
。这在IE8中不受支持,因为它不支持NodeLists作为主机对象。
对于常规for
循环,您不需要这样做,因为您可以像数组一样循环NodeList(不包括Array.prototype.forEach()
),只需删除Array.prototype.slice.call()
方法即可坚持:
var bigElements = profileWrapper.getElementsByTagName('div');
你然而试图使用indexOf
,这是ECMAScript 5和Array.prototype
方法。要获得IE8支持,您需要Polyfill这两个实现或编写一些包装函数来获得相同的结果。