純JavaScript代碼實現文本比較工具,javascript代碼

來源:互聯網
上載者:User

純JavaScript代碼實現文本比較工具,javascript代碼

之前項目需求需要寫一個純js文本比較工具,在此小編把代碼分享在幫客之家平台供大家參考,演算法有待最佳化,本文寫的不好還請見諒。

先上:

代碼如下所示:

把源碼儲存為html格式的檔案就可以直接運行了

<!doctype html><html><head><title>文本比較工具</title><style type="text/css">*{padding:px;margin:px;}html,body{overflow-y: hidden;}.edit_div{border: px solid #CCCCCC;overflow: auto;position: relative;}.edit_div textarea{resize:none;background: none repeat scroll transparent;border: none;width: %;height:px;overflow-y: scroll;position: absolute;left: px;top: px;z-index: ;font-size: px;white-space: pre-wrap;word-wrap: break-word;word-break:break-all;}.edit_div pre{ overflow-y: scroll;white-space: pre-wrap;word-wrap: break-word;word-break:break-all;width: %;height:px;text-align: left;color: #ffffff;z-index: ;font-size: px;}</style></head><body><table style="width:%"><tr><td style="width:%"><div class="edit_div"><pre id="edit_pre_"></pre><textarea id="edit_textarea_" onscroll="test_scroll()" oninput="textchange()" onpropertychange="textchange()"></textarea></div></td><td style="width:%"><div class="edit_div"><pre id="edit_pre_"></pre><textarea id="edit_textarea_" onscroll="test_scroll()" oninput="textchange()" onpropertychange="textchange()"></textarea></div></td></tr></table><script type="text/javascript">function test_scroll(){document.getElementById("edit_pre_").scrollTop=document.getElementById("edit_textarea_").scrollTop;document.getElementById("edit_pre_").scrollTop=document.getElementById("edit_pre_").scrollTop;document.getElementById("edit_textarea_").scrollTop=document.getElementById("edit_textarea_").scrollTop;}function test_scroll(){document.getElementById("edit_pre_").scrollTop=document.getElementById("edit_textarea_").scrollTop;document.getElementById("edit_pre_").scrollTop=document.getElementById("edit_pre_").scrollTop;document.getElementById("edit_textarea_").scrollTop=document.getElementById("edit_textarea_").scrollTop;}function textchange(){var op = eq({ value: document.getElementById("edit_textarea_").value, value: document.getElementById("edit_textarea_").value });document.getElementById("edit_pre_").innerHTML=op.value+"\r\n";document.getElementById("edit_pre_").innerHTML=op.value+"\r\n";}function eq(op) {if(!op){return op;}if(!op.value_style){op.value_style="background-color:#FECC;";}if(!op.value_style){op.value_style="background-color:#FECC;";}if(!op.eq_min){op.eq_min=;}if(!op.eq_index){op.eq_index=;}if (!op.value || !op.value) {return op;}var ps = {v_i: ,v_new_value: "",v_i: ,v_new_value: ""};while (ps.v_i < op.value.length && ps.v_i < op.value.length) {if (op.value[ps.v_i] == op.value[ps.v_i]) {ps.v_new_value += op.value[ps.v_i].replace(/</g,"<").replace(">",">");ps.v_new_value += op.value[ps.v_i].replace(/</g,"<").replace(">",">");ps.v_i += ;ps.v_i += ;if (ps.v_i >= op.value.length) {ps.v_new_value += "<span style='" + op.value_style + "'>" + op.value.substr(ps.v_i).replace(/</g,"<").replace(">",">") + "</span>";break;}if (ps.v_i >= op.value.length) {ps.v_new_value += "<span style='" + op.value_style + "'>" + op.value.substr(ps.v_i).replace(/</g,"<").replace(">",">") + "</span>";break;}} else {ps.v_index = ps.v_i + ;ps.v_eq_length = ;ps.v_eq_max = ;ps.v_start = ps.v_i + ;while (ps.v_index < op.value.length) {if (op.value[ps.v_index] == op.value[ps.v_i + ps.v_eq_length]) {ps.v_eq_length += ;} else if (ps.v_eq_length > ) {if (ps.v_eq_max < ps.v_eq_length) {ps.v_eq_max = ps.v_eq_length;ps.v_start = ps.v_index - ps.v_eq_length;}ps.v_eq_length = ;break;//只尋找最近的}ps.v_index += ;}if (ps.v_eq_max < ps.v_eq_length) {ps.v_eq_max = ps.v_eq_length;ps.v_start = ps.v_index - ps.v_eq_length;}ps.v_index = ps.v_i + ;ps.v_eq_length = ;ps.v_eq_max = ;ps.v_start = ps.v_i + ;while (ps.v_index < op.value.length) {if (op.value[ps.v_index] == op.value[ps.v_i + ps.v_eq_length]) {ps.v_eq_length += ;} else if (ps.v_eq_length > ) {if (ps.v_eq_max < ps.v_eq_length) {ps.v_eq_max = ps.v_eq_length;ps.v_start = ps.v_index - ps.v_eq_length;}ps.v_eq_length = ;break;//只尋找最近的}ps.v_index += ;}if (ps.v_eq_max < ps.v_eq_length) {ps.v_eq_max = ps.v_eq_length;ps.v_start = ps.v_index - ps.v_eq_length;}if (ps.v_eq_max < op.eq_min && ps.v_start - ps.v_i > op.eq_index) {ps.v_eq_max = ;}if (ps.v_eq_max < op.eq_min && ps.v_start - ps.v_i > op.eq_index) {ps.v_eq_max = ;}if ((ps.v_eq_max == && ps.v_eq_max == )) {ps.v_new_value += "<span style='" + op.value_style + "'>" + op.value[ps.v_i].replace(/</g,"<").replace(">",">") + "</span>";ps.v_new_value += "<span style='" + op.value_style + "'>" + op.value[ps.v_i].replace(/</g,"<").replace(">",">") + "</span>";ps.v_i += ;ps.v_i += ;if (ps.v_i >= op.value.length) {ps.v_new_value += "<span style='" + op.value_style + "'>" + op.value.substr(ps.v_i).replace(/</g,"<").replace(">",">") + "</span>";break;}if (ps.v_i >= op.value.length) {ps.v_new_value += "<span style='" + op.value_style + "'>" + op.value.substr(ps.v_i).replace(/</g,"<").replace(">",">") + "</span>";break;}} else if (ps.v_eq_max > ps.v_eq_max) {ps.v_new_value += "<span style='" + op.value_style + "'>" + op.value.substr(ps.v_i, ps.v_start - ps.v_i).replace(/</g,"<").replace(">",">") + "</span>";ps.v_i = ps.v_start;} else {ps.v_new_value += "<span style='" + op.value_style + "'>" + op.value.substr(ps.v_i, ps.v_start - ps.v_i).replace(/</g,"<").replace(">",">") + "</span>";ps.v_i = ps.v_start;}}}op.value = ps.v_new_value;op.value = ps.v_new_value;return op;}function settextheight(){var heigth=(document.documentElement.clientHeight-)+"px"document.getElementById("edit_pre_").style.height=heigth;document.getElementById("edit_textarea_").style.height=heigth;document.getElementById("edit_pre_").style.height=heigth;document.getElementById("edit_textarea_").style.height=heigth;}window.onload=function(){settextheight();window.onresize=function(){settextheight();}}</script></body></html>

以上代碼是使用的純JavaScript代碼實現文本比較工具,希望對大家有所協助!

您可能感興趣的文章:
  • 兩個比較有用的Javascript工具函數代碼
  • 幾個比較實用的JavaScript 測試及效驗工具
  • js文字框走動跑馬燈效果代碼分享
  • js點擊文字框後才載入驗證碼執行個體代碼
  • js計算文字框輸入的字元數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.