サマリー:<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">&
<!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>DOM實(shí)戰(zhàn):模擬智能在線客服系統(tǒng)</title>
</head>
<style>
*{margin: 0;padding: 0;}
div:nth-child(1){
width: 450px;
height: 650px;
background: lightskyblue;
margin: 30px auto;
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;
overflow: hidden;
}
ul{
list-style-type: none;
line-height: 2em;
padding: 15px;
}
table{
width: 90%;
height: 80px;
margin: auto;
}
textarea{
border: none;
resize: none;
background: lightyellow;
float: left;
}
button{
width: 37px;
height: 60px;
float: right;
}
button:hover{
cursor: pointer;
background: orange;
}
</style>
<body>
<div>
<h2>在線客服</h2>
<div>
<ul>
<li></li>
</ul>
</div>
<table>
<td align="right"><textarea name="text" cols="50" rows="4"></textarea></td>
<td align="left"><button type="button">發(fā)送</button></td>
</table>
</div>
<script>
// 如果想操作頁面上的東西,拿不到元素一切白搭
// 1.獲取到頁面相關(guān)的元素
let btn = document.getElementsByTagName('button')[0];
let text = document.getElementsByName('text')[0];
let ul = document.getElementsByTagName('ul')[0];
// 計(jì)數(shù)器
let sum = 0;
// 2.添加點(diǎn)擊事件,獲取用戶信息并發(fā)送到窗口
btn.onclick = function(){
if(text.value.length === 0 ){
alert('老哥,留言要填內(nèi)容!');
return false;
}
// 1.將用戶提交的表單保存起來,然后清空用戶留言表單
let userComment = text.value;
text.value = '';
// 2.創(chuàng)建li,然后把表單插入聊天窗口(要現(xiàn)在文檔里面創(chuàng)建li,不能直接在ul里面創(chuàng)建)
let li = document.createElement('li');
let userPic = '<img src="../images/截圖/123.jpg" width="30px" style="border-radius:50%">';
li.innerHTML =userPic + ' 我是你大佬淇哥:' + userComment;
ul.appendChild(li)
sum += 1;
// 設(shè)置定時(shí)器,1秒后自動(dòng)回復(fù)
setTimeout(function(){
// 自動(dòng)回復(fù)信息的模板
let info = [
'1',
'2',
'3',
'4',
'5'
];
let temp = info[Math.floor(Math.random()*3)];
let reply = document.createElement('li');
let kefuPic = '<img src="../images/截圖/xz.jpg" width="30px" style="border-radius:50%">';
reply.innerHTML = kefuPic + ' 客服星仔:' + '<span style="color:red">'+temp+'</span>';
ul.appendChild(reply);
sum +=1;
},200);
//當(dāng)聊天記錄達(dá)到10條時(shí)清空窗口
if (sum > 6) {
ul.innerHTML = '';
sum = 0;
}
}
//------------------------------------回車事件------------------------------------
onkeydown = function(event){
if(event.keyCode==13)
{
// if(text.value.length === 0 ){
// alert('老哥,留言要填內(nèi)容!');
// return false;
// }
if(!text.value.trim()){
alert('老哥!填內(nèi)容再輸入按回車啊');
return false;
}
// 1.將用戶提交的表單保存起來,然后清空用戶留言表單
let userComment = text.value;
text.value = '';
// 2.創(chuàng)建li,然后把表單插入聊天窗口(要現(xiàn)在文檔里面創(chuàng)建li,不能直接在ul里面創(chuàng)建)
let li = document.createElement('li');
let userPic = '<img src="../images/截圖/123.jpg" width="30px" style="border-radius:50%">';
li.innerHTML =userPic + ' 發(fā)哥:' + userComment;
ul.appendChild(li);
sum += 1;
// 設(shè)置定時(shí)器,1秒后自動(dòng)回復(fù)
setTimeout(function(){
// 自動(dòng)回復(fù)信息的模板
let info = [
'1',
'2',
'3',
'4',
'5'
];
let temp = info[Math.floor(Math.random()*3)];
let reply = document.createElement('li');
let kefuPic = '<img src="../images/截圖/xz.jpg" width="30px" style="border-radius:50%">';
reply.innerHTML = kefuPic + ' 客服星仔:' + '<span style="color:red">'+temp+'</span>';
ul.appendChild(reply);
sum +=1;
// 清空計(jì)數(shù)器
if(sum > 6){
ul.innerHTML = '';
sum = 0;
}
},200);
}else{
return false;
alert('回車事件調(diào)用失敗,請(qǐng)檢查!');
}
}
</script>
</body>
</html>
總結(jié)分三部分
第一部分:用戶留言
首先新建li,然后獲取輸入框里面的值把他賦值給li,最后把li插入到ul里面的最后一個(gè)子元素。
第二部分:判斷用戶是是否留言
判斷用戶是否留言,如果用戶沒有留言就輸出一個(gè)彈窗(老師的if()判斷有點(diǎn)問題,如果第一個(gè)輸入內(nèi)容后,第二次輸入一個(gè)空值判斷不出來,所以我自己又重新寫了一個(gè)非空判斷)
第三部分:客服留言
這個(gè)還是沒有理解用法,稍后百度一下語法的使用再在微博中記錄下來。
(最后我覺得用鼠標(biāo)點(diǎn)擊input好麻煩,所以自己又重新寫了一段回車方法,按回車的時(shí)候把以上內(nèi)容輸出效果與老師的并不不同)
添削の先生:查無此人添削時(shí)間:2019-03-18 09:37:06
先生のまとめ:完成的不錯(cuò),繼續(xù)加油。老師的判斷有問題嗎?我回頭跟他說下。你也可以直接找他。