美文网首页
jq+es6实现答题

jq+es6实现答题

作者: cs大个子女生 | 来源:发表于2021-08-02 15:39 被阅读0次

实现效果,答题,单选,多选,填空题

使用技术 layui(仅样式展示),es6,jq。

效果图

代码:

<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8" />

    <meta

      name="viewport"

      content="width=device-width, initial-scale=1, maximum-scale=1"

    />

    <title>测试 - layui</title>

    <link rel="stylesheet" href="layui/css/layui.css" />

    <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>

    <script src="layui/layui.js"></script>

    <style>

      h1 {

        color: red;

      }

      h2,

      .sure {

        margin: 5px 0;

      }

      .inline {

        display: inline-block;

      }

      .solution i {

        color: orange;

      }

    </style>

  </head>

  <body>

    <form

      class="layui-form"

      action=""

      style="display: flex; justify-content: space-between"

    >

      <div>

        <div class="box"></div>

        <div class="sure layui-btn">确定</div>

      </div>

      <div class="solution">

        <h1>这是答案</h1>

      </div>

    </form>

    <script>

      layui.use(['form', 'layedit', 'laydate'], function () {

        //实例化element

        var form = layui.form

        // 后台返回的数据

        var list = [

          {

            answer: 'A',

            content: '标题0',

            type: '0',

          },

          {

            answer: 'B',

            content: '标题1',

            type: '0',

          },

          {

            answer: 'A,B',

            content: '标题2',

            type: '1',

          },

          {

            answer: 'D',

            content: '标题3',

            type: '1',

          },

          {

            answer: 'D',

            content: '标题4',

            type: '1',

          },

          {

            answer: '我是一道大题的答案',

            content: '标题5',

            type: '2',

          },

          {

            answer: '我是一道大题的答案2222',

            content: '标题6',

            type: '2',

          },

        ]

        const zimu = ['A', 'B', 'C', 'D']

        list.forEach((item, index) => {

          const itemAnswer = [...item.answer.replace(/,/, '')]

          var zifuchuan = `<div>

        <h2>${item.content}</h2>`

          for (let i = 0; i < zimu.length; i++) {

            let taoZimu = zimu[i]

            // 单选题

            if (item.type === '0') {

              zifuchuan += `<div class="inline inline2 dan">

                   <input type="radio" name="${index}" value="${taoZimu}" title="${taoZimu}" ${

                itemAnswer.includes(taoZimu) ? 'checked' : ''

              } />

                  </div>`

            } else if (item.type === '1') {

              // 多选题

              zifuchuan += `<div class="inline inline2 shuang">

                     <input type="checkbox" name="${taoZimu}" value="${taoZimu}" lay-skin="primary" title="${taoZimu}" ${

                itemAnswer.includes(taoZimu) ? 'checked' : ''

              } />

               </div>`

            }

          }

          if (item.type === '2') {

            // 填空题

            zifuchuan += `<div class=" inline" data-name ="${item.type}">

                          <textarea placeholder="请输入内容" class="layui-textarea">${item.answer}</textarea>

                          </div>`

          }

          ;`</div>`

          // 动态渲染

          $('.box').append(zifuchuan)

          form.render('checkbox')

          form.render('radio')

        })

        // 获取数据

        $('.sure').click(function () {

          $('.solution').find('div').html('')

          var formData = [] //总数据

          var ckAarray //input数据

          var ckAarray2 //textarea数据

          var num = 0 //判断是否未选择

          $('.box>div').each(function () {

            ckAarray = $(this).find('.inline2').find('input:checked')

            ckAarray2 = $(this).find('.inline').find('textarea')

            var ans = ''

            // 单选题

            ckAarray.each(function (i, item) {

              ans += ckAarray.length == i + 1 ? item.value : item.value + ','

            })

            // 填空题

            ckAarray2.each(function (i, item) {

              ans += item.value

            })

            // 赋值到对象

            forDan = {

              answer: ans,

              content: $(this).find('h2').html(),

            }

            formData.push(forDan)

          })

          //   判断多少题  没有做

          formData.map((item) => {

            if (item.answer.length == 0) {

              num++

            }

          })

          if (num != 0) {

            alert(

              '总共' +

                formData.length +

                '道题! 已做答:' +

                (formData.length - num) +

                '道题,还有' +

                num +

                '道题未完成'

            )

          } else {

            console.log(formData)

            alert('恭喜你,答题完成')

            formData.forEach((item, index) => {

              var soluData = `<div><i>${index + 1}、</i> ${item.answer}</div>`

              $('.solution').append(soluData)

            })

          }

        })

        // 动态添加单选还是多选

        var typeNum = null

        var typeNum2 = null

        list.forEach(function (item) {

          if (item.type === '0') {

            typeNum++

          } else if (item.type === '1') {

            typeNum2++

          }

        })

        // 单选题

        $('.box>div').eq(0).prepend('<h1>单选题</h1>')

        // 多选题

        $('.box>div')

          .eq(typeNum2 - 1)

          .prepend('<h1>多选题</h1>')

        // 填空题

        $('.box>div')

          .eq(typeNum + typeNum2)

          .prepend('<h1>填空题</h1>')

      })

    </script>

  </body>

</html>

相关文章

  • jq+es6实现答题

    实现效果,答题,单选,多选,填空题 使用技术 layui(仅样式展示),es6,jq。 代码:

  • Android-RecyclerView翻页案例-某些机型输入法

    之前的实现 MonkeyLei:Android-RecyclerView实现多页面答题流程,翻页/提交实现+RV加...

  • iOS 答题功能实现

    最近项目中答题模块进行了优化,可切换主题,切换字体大小,答题背题模式。 答题主界面,可切换答题,背题模式 切换主题...

  • go实现西瓜视频花椒直播等平台智能答题

    本文为转载,原文:go实现西瓜视频花椒直播等平台智能答题 本文源码 本文源码 介绍 最近出了很多答题平分奖金的直播...

  • python游戏|pygame-简单答题

    本文源代码参考《python游戏编程入门》。这是一个简单的答题游戏,主要实现功能:答题界面,选择答案,答对时答案标...

  • 工作总结

    题库各种题型的样式制作,答题逻辑,流程控制和解析正误的逻辑实现。 题目接口对接,答题结果的处理与上传。 招生二兑奖...

  • 如何搭建一个在线答题系统

    在线答题系统是什么? 说到在线答题系统,也许大家都会觉得就是可以实现在线考试回答问题的系统。其实这样回答也是正确的...

  • CollectionView分组,组头高度自适应

    需求:选中答题卡中一个选项,下次进入答题卡,选中的题在屏幕中. 因为要实现选中的滚动居中效果,使用tableVie...

  • ThinkPHP5实现答题管理系统(四)

    我们之前三篇文章实现了模板+题目+选项的增删,现在我们要完成答题管理系统的答题模块啦。 一.UI及功能设计 既然是...

  • SSM+maven实现答题管理系统(四)

    我们之前三篇文章实现了模板+题目+选项的增删,现在我们要完成答题管理系统的答题模块啦。 一.UI及功能设计 既然是...

网友评论

      本文标题:jq+es6实现答题

      本文链接:https://www.haomeiwen.com/subject/qzcjvltx.html