关于代码优化

关于代码优化

我自己做提取函数,去重复等,感觉做的很差,很恶心,又说不出来哪不对,请老师看看,谢谢

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

<!-- 正则测试工具

 * 需求:使用正则查找字符串,返回结果并高亮,返回结果并替换

 -->

<style type="text/css">

.regexp{

width : 650px;

margin :100px auto;

font-size:14px

}

.regexp .title{

color:#777;

font-size: 24px;

text-align: center;

}

.regexp .textbox{

width: 638px;

border:1px solid #ccc;   

 

height:200px;

padding:5px;

resize: none;

}

.regexp .textbox_result , .textbox_replaceResult{

background-color: #eee;

}

.regexp .userReplaceText{

margin: 10px;

}

</style>

</head>

<body>

<div class="regexp">

<h1 class="title">正则表达式测试工具</h1>

<textarea class="textbox" placeholder="在此输入进带匹配的文本" title="待匹配的文本"></textarea>

<p>

正则表达式:

<input type = "text"     class="reg"           title="正则表达式" placeholder="输入正则表达式" />

<input type = "checkbox" name="userModifier"   value="i"/>忽略大小写

<input type = "checkbox" name = "userModifier" value = "g"/>全局匹配

<input type = "checkbox" name = "userModifier" value = "m"/>多行匹配

<input type = "button"   class="matchingBtn"   value="测试匹配"/>

</p>

匹配结果:

<div class="textbox textbox_result"></div>

 

替换成它:

<input type = "text"     class="userReplaceText" title="请告诉我您想替换成啥" placeholder="请告诉我您想替换成啥"/>

<input type = "button"   class="replaceBtn"   value="替换"/><br/>

替换结果:

<div class="textbox textbox_replaceResult"></div>

 

 

</div>

 

 

<script>

//获取元素

var totElems ={

userText: document.querySelector(".textbox"),

reg: document.querySelector(".reg"),

textbox_result: document.querySelector(".textbox_result"),

userModifiers : document.getElementsByName("userModifier"),

matchingBtn : document.querySelector(".matchingBtn"),

userReplaceText:document.querySelector(".userReplaceText"),

replaceBtn:     document.querySelector(".replaceBtn"),

textbox_replaceResult:document.querySelector(".textbox_replaceResult"),

}

//设置正则修饰modifier

var modifier="";

each(totElems.userModifiers, function(index,elem){

elem.addEventListener("click",function(){

modifier = "";

each(totElems.userModifiers,function(index,elem){

if(elem.checked) {modifier += elem.value;}

console.log(modifier);

});

});

});

//绑定事件----点击按钮触发正则匹配,输出结果

totElems.matchingBtn.addEventListener("click",regSearch);

//绑定handler

totElems.replaceBtn.addEventListener("click" ,replaceResult); 

//handler  点击"测试匹配"

function regSearch(){

//验证是否为空

if( isNothing(totElems.userText) ) return;

if( isNothing(totElems.reg) ) return;

//显示查找结果

resultOutPut(matchAddColor(totElems.reg.value ,

   modifier , 

   totElems.userText.value ),

totElems.textbox_result);

}

//handler  点击"替换"

function replaceResult(){

//验证是否为空

if( isNothing(totElems.userText) ) return;

if( isNothing(totElems.reg) ) return;

if( isNothing(totElems.userReplaceText) ) return;

//显示查找结果

resultOutPut(matchAddReplace(totElems.reg.value ,

modifier , 

totElems.userText.value,totElems.userReplaceText.value ),

totElems.textbox_replaceResult);

}

//原子函数----匹配并高亮替换

function matchAddReplace(regexp , modi, text , replaceText ){

var pattern = new RegExp(regexp,modi);

var resu = pattern.exec(text);

if(resu ==null) return "无可替换内容";

return text.replace(pattern,"<span style='background-color:yellow;'>"+replaceText+"</span>");

// <span style='background-color:red;'>$1</span>

}

//原子函数----匹配后高亮  

function matchAddColor(regexp , modi, text ){

var pattern = new RegExp("("+regexp+")",modi);

return pattern.exec(text) ? 

   text.replace(pattern,"<span style='background-color:red;'>$1</span>") : 

   "(查找结果:0)";

}

//原子函数----验证inputDOM元素是否为空

function isNothing(inputText){

var boo =false;

if(!inputText.value){

alert("请输入" + inputText.title + "!");

boo = true;

inputText.focus();

}

return boo;

}

//原子函数----显示结果

function resultOutPut(text,elem){

elem.innerHTML = text;

}

//原子函数----遍历数组或类数组

function each(elems,fn){

for(var i= 0;i<elems.length;i++){

fn(i,elems[i]);

}

}

</script>

</body>

</html>

还有如下:

http://img1.sycdn.imooc.com//climg/5d5919c90001625e09270380.jpg

老师说这样的地方可以去重复,可我不知道该怎么做

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕码 2019-08-18 18:36:23

同学你好!

代码效果实现的不错,代码优化也做的很棒了,给同学一个大大的赞,并且同学你要相信自己做的很好!

其实同学不用急于优化代码,根据同学不同阶段的代码经验和知识储存量,这就是一个慢慢成长的过程哦~

如果帮助到了你,欢迎采纳,祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师