window.onload = function(){
var D=document.getElementsByTagName("D");
var Y=document.getElementsByTagName("Y");
var i=0;
for(i=0;i<D.length;i++){
D[i].index=i;
D[i].onclick=function(){
for(var j=0;j<D.length;j++){
D[j].className="";
Y[j].style.display='none';
}
this.className="active";
Y[this.index].style.display="block";
};
}
};
上面是 gjj.js,在本词典中 d 标签和 y 标签数量相等,但同义词词典内也有 d 和 y,且数量常常不等。此时 gjj.js 作用于整个网页,如果碰巧 D.length > Y.length,Y[j].style.display=‘none’; 越界访问数组,导致其后语句失效。
解决方法:楼主出手,做好“隔离”。
治标不治本的方法:把 gjj.js 里面的 D.length 改为 Math.min(D.length, Y.length)