JavaScript实现论坛发贴等功能

简介: JavaScript实现论坛发贴等功能

需求说明:


单击我要发贴,弹出发贴界面


在标题框中输入标题,选择所属版块,输入帖子内容


单击“发布”按钮,新发布的帖子显示在列表的第一个,新帖子显示头像、标题、版块和发布时间


练习要点:


使用createElement创建节点元素


使用setAttribute( )设置节点的属性


使用appendChild ( )向指定节点之后插入节点元素


使用insertBefore ( )向指定节点之前插入节点元素


使用value获取表单元素的值


使用style属性设置元素的显示和隐藏


实现思路:


使用数组保存发帖者的头像


使用函数floor( )和random( )随机获取发帖者的头像


使用appendChild ( )把头像、标题、版块、时间插入到页面中


设置value值为空来清空当前输入框中的内容


使用style属性隐藏发新贴界面


效果图:


20191013182613856.png

20191013182642997.png


代码实现:


<!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 + "&nbsp;" + 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;}


代码如有不妥之处,还请交流指正,大家一起进步!


目录
相关文章
|
2月前
|
JavaScript 前端开发
JavaScript分页功能
JavaScript分页功能
|
22天前
|
JavaScript
js实现简洁实用的网页计算器功能源码
这是一款使用js实现简洁实用的网页计算器功能源码。可实现比较基本的加减乘除四则运算功能,界面简洁实用,是一款比较基本的js运算功能源码。该源码可兼容目前最新的各类主流浏览器。
24 2
|
2月前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
|
2月前
|
JavaScript 前端开发 API
|
2月前
|
JavaScript API UED
vue.js怎么实现全屏显示功能
【10月更文挑战第7天】
22 1
|
2月前
|
资源调度 JavaScript UED
如何使用Vue.js实现单页应用的路由功能
【10月更文挑战第1天】如何使用Vue.js实现单页应用的路由功能
|
2月前
|
JavaScript 搜索推荐
JS中的模糊查询功能
JS中的模糊查询功能
30 1
|
2月前
|
前端开发 JavaScript
使用 JavaScript 实现图片预览功能
使用 JavaScript 实现图片预览功能
31 0
|
2月前
|
JavaScript 安全 前端开发
js实现复制功能
js实现复制功能
19 0
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项