收藏
回答

如何实现答题程序中按下提交按钮后如若答案正确分数加一,并且判断不同总分数情况下执行不同动作?

目前代码如下:

js.

Page({


  /**

   * 页面的初始数据

   */

  data: {

    questions:[{

      id: 1,

      question: "你更喜欢独处还是聚会?",

      options: ["独处", "聚会"],

      correctAnswer: "独处",

    },

    {

      id: 2,

      question:"在社交场合,你更倾向于等待他人来与你交流还是主动与他人交流?",

      options: ["等待他人交流", "主动交流"],

      correctAnswer: "等待他人交流",

    },

    {

      id: 3,

      question: "当你遇到困难时,你更倾向于独自思考解决方案还是寻求他人的帮助?",

      options: ["独自思考", "寻求他人帮助"],

      correctAnswer: "独自思考",

    },

    {

      id: 4,

      question:"在交流过程中,你更注重倾听他人的观点还是表达自己的观点?",

      options: ["倾听他人的观点", "表达自己的观点"],

      correctAnswer: "倾听他人的观点",

    },

    {

      id: 5,

      question:"你更喜欢跟随他人的领导还是在团队中发挥领导作用?",

      options: ["跟随他人的领导", "发挥领导作用"],

      correctAnswer: "跟随他人的领导",

    }

  ],

    currentQuestionIndex:0,

    selectedOption:'',

    score:0,


  },

    


  /**

   * 生命周期函数--监听页面加载

   */

  onLoad() {

    // 模拟获取题目

    this.getQuestions();

},

  /**

   * 生命周期函数--监听页面初次渲染完成

   */

  onReady() {


  },


  /**

   * 生命周期函数--监听页面显示

   */

  onShow() {


  },


  /**

   * 生命周期函数--监听页面隐藏

   */

  onHide() {


  },


  /**

   * 生命周期函数--监听页面卸载

   */

  onUnload() {


  },


  /**

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

   */

  onPullDownRefresh() {


  },


  /**

   * 页面上拉触底事件的处理函数

   */

  onReachBottom() {


  },


  /**

   * 用户点击右上角分享

   */

  onShareAppMessage() {


  },

  getQuestions() {  

    const questions = this.data.questions; // 使用 this.data.questions 而不是重新定义 questions 数组  

    this.setData({ questions });    

  },  

  // 选项改变时触发的函数

  radioChange (e) {

  this.setData({ selectedOption: e.detail.value });

  },

  checkAnswer() {    

    const { questions, currentQuestionIndex, selectedOption, score } = this.data;  // 使用解构赋值获取所有需要的变量  

    if (currentQuestionIndex < questions.length) {  // 检查当前问题是否存在  

      const currentQuestion = questions[currentQuestionIndex];    

      const Answer = currentQuestion.correctAnswer;  // 获取当前问题的答案  

      if (selectedOption === Answer{  // 检查用户选择的答案是否正确  

        this.setData({ score: score + 1 });  // 更新分数  

      }    

    }    

    this.nextQuestion(); // 调用 nextQuestion 函数来更新当前问题索引并检查分数是否达到3分    

  },    

  nextQuestion() {  // 定义 nextQuestion 函数来更新当前问题索引并检查分数是否达到3分    

    const { currentQuestionIndex, score } = this.data;  // 使用解构赋值获取所有需要的变量  

    if (currentQuestionIndex < this.data.questions.length - 1 && score < 3{  // 检查是否还有问题并且分数未达到3分  

      this.setData({ currentQuestionIndex: (this.data.currentQuestionIndex + 1% this.data.questions.length }); // 更新当前问题索引  

    if (this.data.score >= 3{ // 检查分数是否达到3分  

      wx.navigateTo({ url: '../pages/pages3' }); // 如果达到3分,则导航到pages3页面  

    } else { // 否则,继续下一个问题  

      wx.navigateTo({ url: '../pages/pages4' }); 

    }  

  }  

  },    

});

wxml.

<view class="container">

  <view class="questionwx:for="{{questions}}" wx:key="idbindtap="radioChangedata-id="{{item.id}}" data-idx="{{idx}}">

    {{item.question}}

  <radio-group name='answerbindchange='radioChangeclass="options">

    <label class="options"><radio value="Acolor='purple'/>前者{{item.option.a}}</label>

    <label class="options"><radio value="Bcolor='purple'/>后者{{item.option.b}}</label>

    </radio-group>

  </view>

<button class="submit-btnbindtap="checkAnswer"> 点击提交

</button>

</view>

wxss.

.container {

  display: flex;

  flex-direction: column;

  align-items: center;

  }

.question {

  font-size: 16px;

  padding: 10px;

  margin-bottom: 10px;

  flex-direction:row;

  color: darkslateblue;

}

.options{

  display: flex;

  flex-direction:row;

  align-items:center;

  padding:10px;

  color:black;

}

.submit-btn {

  font-size: 16px;

  padding: 10px;

  background-color: #5e0361c4;

  color: white;

  margin-top: 20px;

}



回答关注问题邀请回答
收藏
登录 后发表内容