鍍金池/ 問答/HTML/ 我想去除矩陣(用tab分割) 兩側(cè)的空格,為什么只執(zhí)行了最后一行并符合要求

我想去除矩陣(用tab分割) 兩側(cè)的空格,為什么只執(zhí)行了最后一行并符合要求

function takeout(th) {

var text2 = $('#data_matrix').val();//獲取值

var allcon2 = text2.split("\n");//換行分割

for (var i =0; i < allcon2.length; i++) {//循環(huán)

a = allcon2[i].split('\t');  //每行用tab分割

var ha=a.join("\t");//數(shù)組行轉(zhuǎn)換成tab分割的字符串行

// console.log(ha);

$(th).val($.trim(ha));
//去掉每一行兩端空格(相當(dāng)于第一列前面和最后一列后面的空格,符合需求)點(diǎn)出來后,只打印出最后一行,并且符合要求
}
return true;//為什么只打印出了最后一行
}



下面是textarea和數(shù)據(jù)  直接復(fù)制測試就可以
<textarea onblur = "takeout(this);" id="data_matrix" rows="20" cols="100" style=" height:218px;min-height:218px;width: 100%;margin-bottom: 20px;">ID Zygote 2_cell 4_cell 8_cell Morula ICM
Pou5f1 1 6 0.6 0.1 1 6
Sox2 2 5 0.5 0.2 2 6651
Gata2 3 4 0.4 0.3 3 46
cMyc 4 3 0.3 0.4 4 36
Tet1 5 2 0.2 0.5 5 25
Tet3 6 1 0.1 0.6 6 1</textarea>


回答
編輯回答
初心

$(th).val($.trim(ha)) 這里每次都把textarea的內(nèi)容清空,更換為當(dāng)前循環(huán)的內(nèi)容,所以結(jié)果只有最后一條記錄。

解決方案是開始先清空內(nèi)容,然后循環(huán)的時(shí)候每次都在原有內(nèi)容基礎(chǔ)上添加,而不是直接設(shè)置

考慮到性能問題,最好是循環(huán)中先拼接字符串,最后再統(tǒng)一val()

var text2 = $('#data_matrix').val();//獲取值

var allcon2 = text2.split("\n");//換行分割

$(th).val('');    // 清空原有內(nèi)容

for (var i =0; i < allcon2.length; i++) {//循環(huán)

a = allcon2[i].split('\t');  //每行用tab分割

var ha=a.join("\t");//數(shù)組行轉(zhuǎn)換成tab分割的字符串行

// console.log(ha);

$(th).val($(th).val() + $.trim(ha) + '\n');
// 拼接原有內(nèi)容
//去掉每一行兩端空格(相當(dāng)于第一列前面和最后一列后面的空格,符合需求)點(diǎn)出來后,只打印出最后一行,并且符合要求
}
return true;//為什么只打印出了最后一行
2017年3月6日 05:29