摘要:基本思路:1.首先设置点击事件,通过if条件判断语句判断文本框内是否输入文本,未输入文字时会有弹窗提示。if (text.value.length === 0) { alert('您好,请输入内容哦~'); return false; &
基本思路:
1.首先设置点击事件,通过if条件判断语句判断文本框内是否输入文本,未输入文字时会有弹窗提示。
if (text.value.length === 0) { alert('您好,请输入内容哦~'); return false; }
2.将文本框储存在变量中,创建一个新的li标签,以显示输入文本的内容,将此内容和用户头像连接起来,使其显示与一行内。
let userComment = text.value; let li = document.createElement('li'); li.innerHTML = userComment; let userPic = '<img src="inc/boy.jpeg" width="30" style="border-radius:50%">'; li.innerHTML = userPic + ' ' + userComment; list.appendChild(li); sum += 1;
3.创立客服在线回复的部分,首先创立一个数组,内容是客服回答的一些语句,将其存放在变量中,通过创立随机数的方式在此数组随机获得相关的语句。将随机获得的一段字符串语句存放于相应的变量之中,使其能和一个有客服头像的语句存在于一行,作为客服的智能回复。
setTimeout(function(){ let info = [ '请问您还想了解什么吗?我们很乐意为您提供!', '请不要着急,我已安排了,很快就给您办好。', '请稍等,我查一下再答复您。', '对不起,我们一定会努力改进的!', '您好,请问还有什么需求吗?', '对不起,我再帮您想别的办法。', '这是我们应该做的!' ]; let temp = info[Math.floor(Math.random()*6+1)]; let reply = document.createElement('li'); let kefuPic = '<img src="inc/gyy.jpg" width="30" style="border-radius:50%;">'; reply.innerHTML = kefuPic + ' ' + '<span style="color:red">'+temp+'</span>'; list.appendChild(reply); sum += 1; },500);
将客服回答的部分放于一个计数器函数中,让客服在每0.5秒后能智能回复。将自己每次输入的内容和客服回答的内容看成一次回答,完成后添加到计数器中,通过if条件判断语句判断,如果计数器大于10,则自动刷新页面。
if (sum > 10) { list.innerHTML = ''; sum = 0; }
注意事项:
在数组中获得相关的字符部分时,这部分可以在后期学习了数据库后再在数据库中调取相关数据;
获取随机数时,通过使用Math.floor(Math.random()*(B-A)+A)的方法可以获取A到B之间的随机数;
在敲代码时需要特别细心,像一个‘.’没打这样的问题可能就会使整个功能无法实现。
完整代码:
<!DOCTYPE html> <html> <head> <title>模拟智能在线客服系统</title> <meta charset="utf-8"> <style type="text/css"> *{margin: 0px;padding: 0px} div:nth-child(1) { width: 450px; height: 650px; background-color: #acf; margin: 30px auto; color: #333 box-shadow: 2px 2px 2px #808080; } h2{ text-align: center; margin-bottom: -10px; font-weight: 400; font-family: 华文琥珀; } div:nth-child(2) { width: 400px; height: 500px; border: 5px double #ff6700; background-color: #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-color: lightyellow; } button { width: 60px; height: 40px; background-color: #F1AD7C; color: #000; border: none; font-family: 幼圆; font-weight: bold; } button:hover { cursor: pointer; background-color: ; color: #fff; } </style> </head> <body> <div> <h2>在线客服</h2> <div contenteditable="true"> <ul> <li></li> </ul> </div> <table> <tr> <td align="right"><textarea cols="50" rows="4" name="text"></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]; 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 = ''; let li = document.createElement('li'); li.innerHTML = userComment; let userPic = '<img src="inc/boy.jpeg" width="30" style="border-radius:50%">'; li.innerHTML = userPic + ' ' + userComment; list.appendChild(li); sum += 1; setTimeout(function(){ let info = [ '请问您还想了解什么吗?我们很乐意为您提供!', '请不要着急,我已安排了,很快就给您办好。', '请稍等,我查一下再答复您。', '对不起,我们一定会努力改进的!', '您好,请问还有什么需求吗?', '对不起,我再帮您想别的办法。', '这是我们应该做的!' ]; let temp = info[Math.floor(Math.random()*6+1)]; let reply = document.createElement('li'); let kefuPic = '<img src="inc/gyy.jpg" width="30" style="border-radius:50%;">'; reply.innerHTML = kefuPic + ' ' + '<span style="color:red">'+temp+'</span>'; list.appendChild(reply); sum += 1; },500); if (sum > 10) { list.innerHTML = ''; sum = 0; } } </script> </body> </html>
批改老师:查无此人批改时间:2019-03-18 09:47:59
老师总结:完成的不错,思路很清晰。 数据之后可以用php请求数据库,有更多的语句进行自动回复。