课程里老师说的简化,尝试了一下,没成功,老师 ,该怎么写
<!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;
height: 150px;
border: 1px solid #ccc;
border-radius: 5px;
padding: 5px;
resize: none;
}
#regexp .readonly{
background-color: #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" id="matchingBtn" value="测试匹配"/>
</p>
匹配结果:
<div id="matchingResult" class="textbox readonly"></div>
<p>替换文本:
<input type="text" id="userReplaceText" class="textfield" placeholder="在此输入替换文本"/>
<input type="button" id="replaceBtn" value="替换"/>
</p>
替换结果:
<div id="replaceResult" class="textbox readonly"></div>
</div>
<script type="text/javascript">
var userText = document.getElementById('userText'),
userRegExp = document.getElementById('userRegExp'),
userModifier = document.getElementsByName('userModifier'),
matchingBtn = document.getElementById('matchingBtn'),
matchingResult = document.getElementById('matchingResult'),
userReplaceText = document.getElementById('userReplaceText'),
replaceBtn = document.getElementById('replaceBtn'),
replaceResult = document.getElementById('replaceResult');
var pattern,
modifier = '';
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 check(user,ale){
if(!user.value){
alert(ale);
user.focus();
return;
}
}
matchingBtn.onclick = function(){
check(userText,'请输入待匹配的文本!');
check(userRegExp,'请输入正则表达式!');
pattern = new RegExp('(' + userRegExp.value + ')',modifier);
matchingResult.innerHTML = pattern.exec(userText.value) ? userText.value.replace(pattern,'<span style="background-color:yellow;">$1</span>') : '没有匹配';
};
// matchingBtn.onclick = function(){
// if(!userText.value){
// alert('请输入待匹配的文本!');
// userText.focus();
// return;
// }
// if(!userRegExp.value){
// alert('请输入正则表达式!');
// userRegExp.focus();
// return;
// }
// pattern = new RegExp('(' + userRegExp.value + ')',modifier);
// matchingResult.innerHTML = pattern.exec(userText.value) ? userText.value.replace(pattern,'<span style="background-color:yellow;">$1</span>') : '没有匹配';
// };
replaceBtn.onclick = function(){
check(userText,'请输入待匹配的文本!');
check(userRegExp,'请输入正则表达式!');
check(userReplaceText,'请输入要替换成的文本!');
pattern = new RegExp('(' + userRegExp.value + ')',modifier);
replaceResult.innerHTML = userText.value.replace(pattern,'<span style="color:red;">' + userReplaceText.value + '</span>');
};
// replaceBtn.onclick = function(){
// if(!userText.value){
// alert('请输入待匹配的文本!');
// userText.focus();
// return;
// }
// if(!userRegExp.value){
// alert('请输入正则表达式!');
// userRegExp.focus();
// return;
// }
// if(!userReplaceText.value){
// alert('请输入要提换成的文本!');
// userReplaceText.focus();
// return;
// }
// pattern = new RegExp('(' + userRegExp.value + ')',modifier);
// replaceResult.innerHTML = userText.value.replace(pattern,'<span style="color:red;">' + userReplaceText.value + '</span>');
// };
</script>
</body>
</html>验证用户输入的时候,会将后面的程序都执行,该怎么改呢?
36
收起
正在回答
2回答
同学你好,因为点击的时候,调用了如下两次,所以会弹出两个。

这里封装的函数需要修改下,在函数中只判断是否有输入的内容,这是一种封装的思路,同学可以参考下,例:



如果我的回答帮助了你,欢迎采纳,祝学习愉快~

恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星