老师,关于代码优化
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>正则表达式测试工具</title> <style> #RegExp{ width: 650px; margin: 100px auto; font-size: 14px; } #RegExp .title{ color: #777; font-size: 24px; text-align: center; } #RegExp .textbox{ width: 638px; height: 150px; border: 1px solid #ccc; border-radius: 5px; padding: 5px; resize: none; } #RegExp .readOnly{ background: #eee; } #RegExp .textfield{ width: 215px; padding: 5px; border: 1px solid #ccc; } </style> </head> <body> <div id="RegExp"> <h1 class="title">正则表达式测试工具</h1> <textarea id="userText" class="textbox" placeholder="在此输入带匹配的文本"></textarea> <p> 正则表达式:<input type="text" id="userRegExp" class="textfield" 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" value="测试匹配" id="matchingBtn"> </p> 匹配结果: <div id="matchingResult" class="textbox readOnly"></div> <p> 替换文本:<input type="text" id="userReplaceText" class="textfield" placeholder="在此输入替换文本"> <input type="button" value="替换" id="replaceBtn"> </p> 替换结果: <div id="replaceResult" class="textbox readOnly"></div> </div> <script> var userText = byId("userText"), userRegExp = byId("userRegExp"), userModifier = document.getElementsByName("userModifier"), matchingBtn = byId("matchingBtn"), matchingResult = byId("matchingResult"), userReplaceText = byId("userReplaceText"), replaceBtn = byId("replaceBtn"), replaceResult = byId("replaceResult"); var pattern, modifier = ''; //封装getElementById function byId(id){ return typeof(id)==="string"?document.getElementById(id):id; } //模式修饰符igm的判断 for(var i = 0; i < userModifier.length; i++){ userModifier[i].onclick = function () { modifier = ''; for(var j = 0; j < userModifier.length; j++){ if(userModifier[j].checked){ modifier += userModifier[j].value; } } } } //检测是否输入 function checkInput(inputText){ if(!inputText.value){ if(inputText==userText){ alert("请输入待匹配的文本!"); }else if(inputText==userRegExp){ alert("请输入正则表达式!"); }else if(inputText==userReplaceText){ alert("请输入替换文本!"); } inputText.focus(); return; } } //结果输出 function resultInput(inputText){ pattern = new RegExp('('+userRegExp.value+')',modifier); inputText.innerHTML = pattern.exec(userText.value) ?userText.value.replace(pattern,"<span style='background-color:yellow;'>$1</span>"):'(没有匹配)'; } //给测试匹配按钮绑定点击事件 matchingBtn.onclick = function () { //检测是否输入了待匹配文本 checkInput(userText); //检测是否输入了正则表达式 checkInput(userRegExp); resultInput(matchingResult); // matchingResult.innerHTML = pattern.exec(userText.value) ||'(没有匹配)'; //短路操作,如果匹配得到,返回匹配的内容;如果未匹配得到,返回(没有匹配) } //给替换按钮绑定点击事件 replaceBtn.onclick = function () { checkInput(userText); checkInput(userRegExp); //检测是否输入了替换文本 checkInput(userReplaceText); pattern = new RegExp('('+userRegExp.value+')',modifier); replaceResult.innerHTML = userText.value.replace(pattern,"<span style='color:red;'>"+ userReplaceText.value +"</span>"); } </script> </body> </html>
我对getElementById进行了封装,还将检测是否输入相关文本的重复字段进行了提取,
在对结果输出部分进行函数封装时遇到了小困难,可以怎么整合代码?
除了我提到的这个问题之外,还有什么部分还可以优化吗
14
收起
正在回答 回答被采纳积分+1
2回答
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星