【wx小程序】一个简单的答题小界面


前言

最近在写学校的项目,涉及做个答题界面,网上逛了一圈感觉都很复杂,我小小的项目也不大需要那些花活,所以自己半写半改整了个极简风的答题界面。咱大学牲写代码主打一个支离破碎,欢迎各位大佬指点。

1.wxml(前端界面渲染)

<block wx:for="{{questions}}">
  <view class='naire'>
    <view class='question'>{{index+1}}. {{item.question}}</view>
    <!--view class='border' /-->
    <radio-group class='radio-group' name='answer' bindchange='radioChange' data-question-id='{{item.id}}'>
      <label class='radio'>
        <radio value="A" color='#fcbe39' />{{item.answers.a}}
      </label>
      <label class='radio'>
        <radio value="B" color='#fcbe39' />{{item.answers.b}}
      </label>
      <label class='radio'>
        <radio value="C" color='#fcbe39' />{{item.answers.c}}
      </label>
      <label class='radio'>
        <radio value="D" color='#fcbe39' />{{item.answers.d}}
      </label>
    </radio-group>
  </view>
</block>

<button class='btns' hover-class='none' form-type='submit' bindtap='GoEnd'>提交</button>

2.题目.js

这是questions.js 在页面同级下自己创建一个就行 里面保存的是题目
其实right_answer是不需要的,但是后来也没删,就让它在那里吧。。。

var local_data = [
  {
    id:0,
    question: "垃圾分类中,以下哪种垃圾属于可回收垃圾?",
    answers: {"a":"塑料瓶", "b":"食品残渣", "c":"电池", "d":"纸巾"},
    right_answer: "A"
  },
  {
    id:1,
    question: "废纸张应该投放到垃圾桶的哪个分类?",
    answers: {"a":"可回收垃圾", "b":"有害垃圾", "c":"厨余垃圾", "d":"其他垃圾"},
    right_answer: "A"
  },
  {
    id:2,
    question: "废旧电池属于哪一类垃圾?",
    answers: {"a":"可回收垃圾", "b":"有害垃圾", "c":"厨余垃圾", "d":"其他垃圾"},
    right_answer: "B"
  },
  {
   //...
];


module.exports= {
  questions: local_data
}

3.核心.js

核心的js代码,主打思想是将选项计入数组,最后和正确答案的数组循环对比自动算分

var Data = require("../exm/questions.js")
var ans = new Array(20)  //答案数组初始化,会在onload函数中赋初值
Page({

  /**
   * 页面的初始数据
   */
  data: {
    questions: Data.questions,//题库
    answer: [] as (string | null)[],
  },

  //选项点击操作
  radioChange: function (e: { detail: { value: any; }; currentTarget: { dataset: { questionId: any; }; }; }
  ) {
    // 获取用户选择的答案
    var selectedAnswer = e.detail.value;

    // 获取当前题目的唯一标识符
    var questionId = e.currentTarget.dataset.questionId;

    // 获取当前的答案数组
    var currentAnswers = this.data.answer;

    // 将用户选择的答案与题目标识符关联存储到数组中
    currentAnswers[questionId] = selectedAnswer;

    // 更新小程序的数据,将答案数组设置为新的状态
    this.setData({
      answer: currentAnswers,
    });

    // 打印出更新后的答案数组
    console.log(this.data.answer);
  },





  //跳转结束页面
  GoEnd: function () {
    // 获取用户选择的答案数组
    var userAnswers = this.data.answer;
  
    // 获取正确的答案数组
    var correctAnswers = ["A", "A", "B", "C", "B", "D", "A", "B", "B", "A"];
  
    // 计算得分
    var score = 0;
    for (var i = 0; i < correctAnswers.length; i++) {
      // 检查用户的答案是否和正确答案相符,注意索引从 0 开始
      if (userAnswers[i] === correctAnswers[i]) {
        // 如果答案正确,加10分
        score += 10;
      }
    }
  
    // 可以在这里将得分传递到下一个页面,或者在当前页面展示得分
    console.log("得分:" + score);
  
    // 跳转到下一个页面
    wx.navigateTo({
      url: '../end/index?score=' + score, // 可以通过 query 参数传递得分
    });
  },


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function () {
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage(opts: { target: any; }): WechatMiniprogram.Page.ICustomShareContent {
    console.log(opts.target)
    return {}
  }
})

总结

人生的第一篇blog,只能说微信小程序害人不浅,资料虽然多,但真的赶不上官方更新的速度,最后导致写的时候一脚一个坑。
我的核心js已经是ts后缀了,所以不确定在js上会不会报错。。。
方法比较暴力,不适合需要导入大量的题目的情况,但另一方面可以省下服务器那边的接口,在不太重要的场合下还挺好用。。。

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单微信小程序登录界面的代码示例: ```html <view class="container"> <image class="logo" src="/images/logo.png"></image> <form class="form"> <input type="text" placeholder="请输入用户名" bindinput="onUsernameInput"></input> <input type="password" placeholder="请输入密码" bindinput="onPasswordInput"></input> <button type="primary" bindtap="onLogin">登录</button> </form> </view> ``` ```javascript Page({ data: { username: '', password: '' }, onUsernameInput: function (event) { this.setData({ username: event.detail.value }) }, onPasswordInput: function (event) { this.setData({ password: event.detail.value }) }, onLogin: function () { // 发送登录请求 wx.request({ url: 'https://api.example.com/login', method: 'POST', data: { username: this.data.username, password: this.data.password }, success: function (res) { // 登录成功,跳转到首页 wx.switchTab({ url: '/pages/home/home' }) }, fail: function (res) { // 登录失败,弹出错误提示 wx.showToast({ title: '登录失败,请重试', icon: 'none' }) } }) } }) ``` 在这个示例中,我们使用了微信小程序提供的 `input`、`button` 和 `form` 组件来构建登录表单。用户输入用户名和密码后,点击登录按钮会触发 `onLogin` 函数,该函数会发送 HTTP 请求到后台 API 进行登录验证。如果登录成功,则跳转到首页;否则弹出错误提示。 当然,这只是一个简单的示例,实际上微信小程序的登录界面可能会更加复杂,需要根据具体需求进行开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值