摘要:<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>DOM实战:模拟智能在线客服系统</title> <style type="text/css"> div:nth-c
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>DOM实战:模拟智能在线客服系统</title>
<style type="text/css">
div:nth-child(1){
width: 450px;height: 650px;
background: skyblue;margin: 30px auto;
color: #333;box-shadow: 2px 2px 2px #808080;
}
h2{
text-align: center;margin-bottom: -10px;
}
div:nth-child(2){
width: 400px;height: 500px;
border: 4px double green;
background: #efefef;
margin: 20px auto 10px;
}
ul{
list-style: none;
line-height: 2em;
overflow: hidden;
padding: 15px;
}
table{
width: 90%;height: 80px;
margin: auto;
}
textarea{
border: none;
resize: none;
background: lightyellow;
padding: 10px;
}
button{
width: 60px;
height: 40px;
background: seagreen;
border: none;
}
button:hover{
cursor: pointer;
background: orange;
}
</style>
</head>
<body>
<div>
<h2>在线客服</h2>
<div>
<ul>
<li></li>
</ul>
</div>
<table>
<tr>
<td align="right"><textarea name="text" cols="50" rows="4"></textarea></td>
<td align="left"> <button type="button">发送</button></td>
</tr>
</table>
</div>
<script type="text/javascript">
// 获取到页面中的元素
// 按钮
let btn = document.getElementsByTagName('button')[0];
// 输入内容
let text = document.getElementsByName('text')[0];
// ul元素
let list = document.getElementsByTagName('ul')[0];
// 计数器
let sum = 0;
// 添加点击事件,获取用户说的内容并发送到窗口
btn.onclick = function(){
// 获取用户提交的内容
if(text.value.length === 0){
alert('大哥,您是不是忘记说点什么了?');
return false;
}
// 将用户提交的内容获取并保存
let userComment = text.value;
// 立即将用户留言区清空
text.value = '';
// 创建一个li
let li = document.createElement('li');
// 用户头像
let userPic = '<img src="img/kf.png" width="30" style="border-radius:50%">';
li.innerHTML = userPic+ ' '+ userComment;
list.appendChild(li);
sum += 1;
// 回复,2秒后自动回复
setTimeout(function(){
// 定义一个自动回复信息模板
let info = [
'晚上好!有什么可以帮到您的吗?',
'除了退货退款,什么都可以问',
'你说的是什么,我不明白?',
'在我觉得方便的时候再回复你',
'投诉我的人多了,你排队吧',
];
let tmp = info[Math.floor(Math.random()*4)];
let reply = document.createElement('li');
let kfPic = '<img src="img/xt.png" width="30" style="border-radius:50%;">';
reply.innerHTML = kfPic + ' ' + '<span style="color:red">' + tmp + '</span>';
// 把数据添加到末尾
list.appendChild(reply);
sum += 1;
},2000);
// 清空窗口并将计数器清零
if(sum > 10 ) {
list.innerHTML = '';
sum = 0;
}
}
</script>
</body>
</html>
批改老师:西门大官人批改时间:2019-03-29 09:57:19
老师总结:建议把setTimeout放到click事件外面去,放到一个独立的函数,在click函数中调用