需求说明:
单击我要发贴,弹出发贴界面
在标题框中输入标题,选择所属版块,输入帖子内容
单击“发布”按钮,新发布的帖子显示在列表的第一个,新帖子显示头像、标题、版块和发布时间
练习要点:
使用createElement创建节点元素
使用setAttribute( )设置节点的属性
使用appendChild ( )向指定节点之后插入节点元素
使用insertBefore ( )向指定节点之前插入节点元素
使用value获取表单元素的值
使用style属性设置元素的显示和隐藏
实现思路:
使用数组保存发帖者的头像
使用函数floor( )和random( )随机获取发帖者的头像
使用appendChild ( )把头像、标题、版块、时间插入到页面中
设置value值为空来清空当前输入框中的内容
使用style属性隐藏发新贴界面
效果图:
代码实现:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>课工场论坛发贴</title> <link type="text/css" rel="stylesheet" href="JSTest4.css" /> </head> <body> <div class="bbs"> <header><span onclick="iWantPost()">我要发帖</span></header> <section> <ul> <!-- <li> <div> <img src="images/tou01.jpg" alt=""> </div> <h1>如何学习前端Web开发课程</h1> <p><span>版块:新课来了</span><span>发表时间:2019-10-13 10:9</span></p> </li> --> </ul> </section> <div class="post" id="post1"> <input id="title" placeholder="请输入标题(1-50个字符)"> 所属版块:<select><option>请选择版块</option><option>电子书籍</option><option>新课来了</option><option>新手报到</option><option>职业规划</option></select> <textarea class="content"></textarea> <input class="btn" value="发布" onclick="post()"> </div> </div> </body> </html> <script> function iWantPost() { document.getElementById("post1").style.display = "block"; } function headPortrait() { //使用数组保存发帖者的头像 var head = new Array("01.jpg", "02.jpg", "03.jpg", "04.jpg"); //生成 0 到 数组长度之间的随机数 var n = parseInt(Math.random() * 4); return head[n]; } function post() { document.getElementById("post1").style.display = "none"; /* 创建节点 */ var ul = document.getElementsByTagName("ul")[0]; var li = document.createElement("li"); var div = document.createElement("div"); var img = document.createElement("img"); var h1 = document.createElement("h1"); var p = document.createElement("p"); var span = document.createElement("span"); ul.appendChild(li); li.className = ".bbs section ul li"; li.appendChild(div); div.className = ".bbs section ul li div"; // 插入头像 div.appendChild(img); img.className = ".bbs section ul li div img"; img.src = "../image/" + headPortrait(); // 插入标题 li.appendChild(h1); h1.className = ".bbs section ul li h1"; h1.innerHTML = document.getElementById("title").value; // 插入板块 li.appendChild(p); p.className = ".bbs section ul li p"; p.innerHTML = "版块:" + document.getElementsByTagName("select")[0].value; // 插入时间 p.appendChild(span); span.className = ".bbs section ul li p span"; var today = new Date(); var year = today.getFullYear(); var month = today.getMonth() + 1; var day = today.getDate(); var hour = today.getHours(); var minute = today.getMinutes(); var second = today.getSeconds(); span.innerHTML = "发表时间:" + year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second; document.getElementById("title").value = ""; document.getElementsByTagName("select")[0].value = ""; ul.insertBefore(li, ul.firstElementChild); } </script>
*{margin: 0; padding: 0; font-family: "Arial", "微软雅黑";} ul,li{list-style: none;} .bbs{margin: 0 auto; width: 600px; position: relative;} header{padding: 5px 0; border-bottom: 1px solid #cecece;} header span{display:inline-block; width: 220px; height: 50px; color: #fff; background: #009966; font-size: 18px; font-weight: bold; text-align: center;line-height: 50px; border-radius: 8px; cursor: pointer;} .post{position: absolute; background: #ffffff; border: 1px #cccccc solid; width: 500px; left: 65px; top:70px; padding: 10px; font-size: 14px; z-index: 999999; display: none;} .post .title{width: 450px; height:30px; line-height: 30px; display: block; border: 1px #cecece solid; margin-bottom: 10px;} .post select{width: 200px; height: 30px;} .post .content{width: 450px; height: 200px; display: block; margin: 10px 0;border: 1px #cecece solid;} .post .btn{width: 160px; height: 35px; color: #fff; background: #009966; border: none; font-size: 14px; font-weight: bold; text-align: center; line-height: 35px; border-radius: 8px; cursor: pointer;} .bbs section ul li{padding: 10px 0; border-bottom: 1px #999999 dashed; overflow: hidden;} .bbs section ul li div{float: left; width: 60px; margin-right: 10px;} .bbs section ul li div img{ border-radius:50%; width: 60px;} .bbs section ul li h1{float: left; width: 520px; font-size: 16px; line-height: 35px;} .bbs section ul li p{color: #666666; line-height: 25px; font-size: 12px; } .bbs section ul li p span{padding-right:20px;}
代码如有不妥之处,还请交流指正,大家一起进步!