作者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