我需要讓這個jquery運行得更快,我沒有創建所有這些函數,但需要他們的方法來做頁面內容的實時轉換。請幫我重構這個jQuery代碼
所以,我將不勝感激任何建議,以改善性能,下面的代碼重構。
/* function 1 read json into array */
/* function 2 loop through array */
/* function 3 replace text nodes based on data from looped array */
var en_lang = new Array();
var fr_lang = new Array();
var frca_lang = new Array();
var my_data = null;
var en_count = 1;
var fr_count = 1;
var frca_count = 1;
if(typeof(language) != "undefined"){
var language = 'frca';
}
function replaceText(oldText, newText, node){
node = node || document.body; // base node
var childs = node.childNodes, i = 0;
while(node = childs[i]){
if (node.nodeType == 3){ // text node found, do the replacement
if (node.textContent) {
node.textContent = node.textContent.replace(oldText, newText);
} else { // support to IE
node.nodeValue = node.nodeValue.replace(oldText, newText);
}
} else { // not a text mode, look forward
replaceText(oldText, newText, node);
}
i++;
}
}
function parsejSON(my_data) {
/* THIS PART GRABS DATA FROM TOP OF JSON FILE */
/* grab recordcount */
var recordcount = my_data.recordcount;
/* grab columnlist */
var columnlist = my_data.columnlist;
/* grab json data */
var json_data = my_data.data;
/* PUTS JSON DATA INTO ARRAYS */
for(var x = 0; x < recordcount; x++) {
var lng = json_data.lng[x];
var phrase = json_data.phrase[x];
if (lng == 'french') {
fr_lang[fr_count] = phrase;
fr_count = fr_count + 1;
}
if (lng == 'french canadian') {
frca_lang[frca_count] = phrase;
frca_count = frca_count + 1;
}
if (lng == 'english') {
en_lang[en_count] = phrase;
en_count = en_count + 1;
}
}
/* use a replacetext function above to replace all text */
for(var x = 0; x < en_lang.length; x++) {
var from = en_lang[x];
if (language == 'fr') {
var to = fr_lang[x];
}
if (language == 'frca') {
var to = frca_lang[x];
}
replaceText(from, to);
}
}
不好意思,不太清楚如何讓代碼發佈,格式正確,隨意編輯我在那種情況下後..
謝謝。
我在這裏沒有看到任何jQuery。你的意思是JavaScript嗎? – artlung 2010-01-28 17:57:12
我相信,我修剪了jquery。對不起,如果不清楚,並感謝您爲我編輯它。 – crosenblum 2010-01-28 18:03:03