Javascript querySelectorAll中的活动节点
我有一个在Firefox中工作的脚本,它使用一个用GetElementsByCassName提取的元素数组。IE8不支持此方法,因此我必须替换querySelectorAll。我的问题是querySelectorAll创建一个静态列表,而不是对实际元素的实时引用 我的剧本Javascript querySelectorAll中的活动节点,javascript,internet-explorer-8,Javascript,Internet Explorer 8,我有一个在Firefox中工作的脚本,它使用一个用GetElementsByCassName提取的元素数组。IE8不支持此方法,因此我必须替换querySelectorAll。我的问题是querySelectorAll创建一个静态列表,而不是对实际元素的实时引用 我的剧本 function subMenu(sCat,gCat,sh,gh,selection) { sElements = document.querySelectorAll('cat'+sCat); gElement
function subMenu(sCat,gCat,sh,gh,selection)
{
sElements = document.querySelectorAll('cat'+sCat);
gElements = document.querySelectorAll('cat'+gCat);
// sElements = document.getElementsByClassName('cat'+sCat);
// gElements = document.getElementsByClassName('cat'+gCat);
if(sh>0)
{
for(i=0;i<sElements.length;i++)
{
if(!(h = window.getComputedStyle(sElements[i],null).height)) {h=sElements[i].currentStyle;}
nh = parseInt(h.replace("px",""))-4;
sElements[i].style.height = nh+"px";
}
sh=sh-4;
}
if(gh<100)
{
for(i=0;i<gElements.length;i++)
{
if(!(h = window.getComputedStyle(gElements[i],null).height)) {h=gElements[i].currentStyle;}
nh = parseInt(h.replace("px",""))+4;
gElements[i].style.height = nh+"px";
}
gh=gh+4;
}
if(sh>0 || gh<100) {xMenu=setTimeout("subMenu("+sCat+","+gCat+","+sh+","+gh+",'"+selection+"')",10);}
else
{
fadeOut(selection);
}
}
功能子菜单(sCat、gCat、sh、gh、选择)
{
选择=document.queryselectoral('cat'+sCat);
gElements=document.queryselectoral('cat'+gCat);
//seElements=document.getElementsByClassName('cat'+sCat);
//gElements=document.getElementsByClassName('cat'+gCat);
如果(sh>0)
{
对于(i=0;iquerySelectorAll
,顾名思义,它需要一个选择器。类以点开头,就像在CSS中一样:
sElements = document.querySelectorAll('.cat'+sCat);
-^-
要将其转换为实数组,请执行以下操作:
realArray = Array.prototype.slice.call(pseudoArray);
他支持IE8,但这种数组技巧在IE8中不起作用。谢谢。这肯定解决了querySelectorAll问题。ie的问题仍然存在,但这是我的问题。猜测“static”只是指元素列表,而不是它们的属性。