JavaScript解决问题 | 青训营

64 阅读2分钟

JavaScript 是一种非常灵活和强大的编程语言,它可以用来实现各种功能或解决各种问题。

例如,你可以用 JavaScript 来:

  • 创建动态的网页效果,如幻灯片、下拉菜单、弹窗等。
  • 验证用户输入的表单数据,如邮箱、密码、手机号等。
  • 检测用户的浏览器类型和版本,以便为不同的浏览器提供最佳的用户体验。
  • 存储和读取用户的偏好设置,如主题、语言、字体大小等。
  • 与服务器端进行数据交互,如发送请求、接收响应、处理 JSON 数据等。
  • 利用 HTML5 的新特性,如 CanvasAudioVideoGeolocation 等,创建富媒体和交互式的应用。
  • 编写自定义的函数和对象,以实现更复杂和高级的逻辑和算法。

JavaScript如此强大,在编写程序的时候遇到困难如何解决,用一个TodoList案例来演示.。

TodoList案例:

案例最终实现效果如下图:

效果图.png

要求:

  • input框内输入要添加的事项,按回车后能够在列表中添加一个事项。
  • 每个事项的状态为已完成状态后,底部的复选框会自动勾选
  • 点击底部的复选框能够把列表中的所有事项都设为已完成状态或者是未完成状态
  • 点击底部的“清除已完成事项按钮”能够清除列表中所有的已完成事项
  • 底部的已完成事项数和全部的事项数能够跟随用户的操作及时改变

弄清楚要实现那些功能后开始按照以下步骤编写代码。

实现静态网页

这一步先不考虑js的交互效果,先把静态的网页写出来,然后再逐步给页面添加交互效果,所以,很容易写出以下代码:

html
复制代码
<div class="todolist">
    <div class="header">
        <input
               type="text"
               class="something"
               placeholder="请输入你的任务事项,按回车确定"
        />
    </div>
    
    <div class="content">
        <div class="item">
            <input type="checkbox" class="state" />
            <label class="title">Hello world!</label>
        </div>
        <div class="item">
            <input type="checkbox" class="state" />
            <label class="title">hello world!</label>
        </div>
        <div class="item">
            <input type="checkbox" class="state" />
            <label class="title">hello world!</label>
        </div>
    </div>
    
    <div class="footer">
        <input type="checkbox" class="select-all" />
        <span class="sum">已完成 0/全部 3</span>
        <button class="clear">清除已完成事项</button>
    </div>
</div>
css
复制代码
html,
body {
  width: 100%;
  height: 100%;
  padding: 0;
  margin: 0;
}

.todolist {
  width: 600px;
  margin: 0 auto;
  border: 1px solid gray;
  padding: 5px;
  border-radius: 5px;
}

.todolist .header .something {
  width: 600px;
  height: 30px;
  margin-bottom: 10px;
  border: 1px solid gray;
  box-sizing: border-box;
}

.todolist .content .item {
  width: 600px;
  height: 40px;
  line-height: 40px;
  border: 1px solid gray;
  border-radius: 5px;
  box-sizing: border-box;
}
.todolist .content .item:hover {
  background-color: rgba(128, 128, 128, 0.144);
}

.todolist .footer {
  width: 600px;
  height: 50px;
  line-height: 50px;
  position: relative;
}

.todolist .footer .clear {
  position: absolute;
  right: 0;
  top: 50%;
  transform: translate(0, -50%);
  font-size: 15px;
  background-color: rgb(226, 92, 70);
  color: white;
  border: 1px solid red;
  border-radius: 3px;
  padding: 5px;
  overflow: hidden;
  cursor: pointer;
}

这样就实现了静态网页的效果,当然,展示一个时间列表也可以写成一个<ul>列表展示,实现方法有很多,不必拘泥于一种。