原生JS实现留言板案例

这是一个非常简单的留言板案例,实现了增删改留言的功能:

首先是HTML+CSS代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="index.css">
</head>
<body>
    
    <div class="message-board">
        <h2>留言板</h2>
        <div id="message-input-container">
            <textarea id="message-input" placeholder="输入你的留言"></textarea>
            <button id="submit-btn">提交</button>
        </div>
        <ul id="message-list">
        </ul>
    </div>
    <script src="index.js"></script>
</body>
</html>

 

.message-board {
    width: 80%;
    margin: auto;
}

#message-input-container {
    margin-bottom: 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

#message-input {
    flex-grow: 1;
    height: 30px;
    margin-right: 10px;
    padding: 10px;
    border-radius: 5px;
    border: 1px solid #ccc;
}

#submit-btn {
    padding: 10px 20px;
    border: none;
    border-radius: 5px;
    background-color: #4CAF50;
    color: white;
    cursor: pointer;
}

#submit-btn:hover {
    background-color: #45a049;
}

#message-list {
    list-style-type: none;
    padding: 0;
}

#message-list li {
    margin-bottom: 10px;
    padding: 10px;
    border-radius: 5px;
    border: 1px solid #ccc;
    display: flex;
    justify-content: flex-start;
    align-items: center;
}

.delete-btn {
    color: #fff;
    background-color: #f44336;
    border: none;
    border-radius: 5px;
    padding: 5px 10px;
    cursor: pointer;
    margin-left: 70%;
}

.delete-btn:hover {
    background-color: #d32f2f;
}

.mod {
    color: #fff;
    background-color: #07bb70;
    border: none;
    border-radius: 5px;
    padding: 5px 10px;
    cursor: pointer;
    margin-left: auto;
}

.mod:hover {
    background-color: #0b7a48;
}

然后是JS代码:

function main() {
  var textarea = document.querySelector("#message-input");
  var submitBtn = document.querySelector("#submit-btn");
  var ul = document.querySelector("#message-list");
  var change = document.querySelector("#change")
  var item = pullItem();
  if (item == null) {
    item = [];
  } else {
    renderHtml(item)
  }
  function renderHtml(item) {
    ul.innerHTML = ""
    item.forEach(i => {
      addItem(i);
    });
  }
  textarea.addEventListener("keydown", e => {
    if (e.keyCode === 13) {
      e.preventDefault();
      submitBtn.click();
    }
  });
  submitBtn.addEventListener("click", () => {
    var textContent = textarea.value.trim();
    if (textContent != "") {
      addItem(textContent);
      item.push(textContent);
      saveItem(item);
      textarea.value = "";
    } else {
      alert("输入不能为空");
    }
  });
  ul.addEventListener("click", e => {
    if (e.target.className == "delete-btn") {
      newEle = e.target.previousElementSibling.innerHTML;
      item = item.filter(i => i != newEle);
      e.target.parentNode.remove();
      saveItem(item);
    }
  });

  ul.addEventListener("click", e => {
    if (e.target.className == "mod") {
      newEle = e.target.previousElementSibling.previousElementSibling.innerHTML;
      var secEle = prompt("请输入要修改的内容");
      console.log(secEle);
      secEle != null ? secEle = secEle : secEle = newEle
      item = item.map(i => i == newEle ? newEle = secEle : i=i);
      saveItem(item);
      renderHtml(item)
    }
  });

  function saveItem(item) {
    window.localStorage.setItem("save", JSON.stringify(item));
  }
  function pullItem() {
    return JSON.parse(window.localStorage.getItem("save"));
  }
  function addItem(textContent) {
    var li = document.createElement("li");
    li.innerHTML = `
                  <span class="message">${textContent}</span>
                  <button class="delete-btn">删除</button>
                  <button class="mod">修改</button>
      `;
    ul.appendChild(li);
  }
}

window.addEventListener("load", main);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值