作者nosql (mingray/nosql)
看板Ajax
标题[问题] 如何在最快速度把item换掉?
时间Mon Aug 3 20:09:29 2009
我有很多个下拉选单,
下拉选单之中的选项是从某个database来的,
如果我想做个外挂,
执行按钮後,
他会把选单中的选项全部从英文换成中文,
我目前的做法是:
1.做个暴力阵列对照表比较字串('a' == 'a' 的方式)
2.for回圈暴力置换每个select的option的innerText
除此之外有更快的方法吗?
--
我的script程式码如下
var boolErr = false;
var strNavi = navigator.appName;
var boolIE = false;
var boolOpera = false;
try{
if(strNavi == 'Opera'){
var docC = window.top.contol.document;
boolOpera = true;
}else if (strNavi == 'Microsoft Internet Explorer'){
var docC = window.top.contol.document;
boolIE = true;
}
}catch (e){
alert('hacking failed');
boolErr = true;
}
if(!boolErr){
function searchDB(strE){
var dataIDBArray1 = new Array(6130);
var dataIDBArray2 = new Array(6130);
// 下略database数万字
var strC = strE;
var intlen = dataIDBArray1.length;
for(var i_th = 0; i_th < intlen; i_th++){
if(dataIDBArray1[i_th] == strE){
strC = dataIDBArray2[i_th];
break;
}
}
return strC;
}
var dMenuHead = docC.getElementsByName('headMenu')[0];
var dMenuBody = docC.getElementsByName('bodyMenu')[0];
// 下略
var intlen;
intlen = dMenuHead.length;
for(var i_th = 0; i_th < intlen; i_th++){
dMenuHead[i_th].innerText = searchDB(dMenuHead[i_th].innerText);
}
intlen = dMenuBody.length;
for(var i_th = 0; i_th < intlen; i_th++){
dMenuBody[i_th].innerText = searchDB(dMenuBody[i_th].innerText);
}
// 下略
}
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.116.201.115
7F:→ nosql:附注 因为select的各个option有value 可能会变动 08/03 20:11
8F:→ nosql:所以我才用innerText置换 08/03 20:11
9F:→ nosql:刚有个解 IE7比opera9.6快的 因为我要置换的是字串 08/03 21:24
10F:→ nosql:所以用字串当阵列索引 在ie下速度快很多 08/03 21:24