JavaScript 动态评分矩阵

标签 javascript jquery matrix

我需要一种在 JavaScript 中实现动态评分矩阵的方法。我在这里创建了一个 fiddle :

Sample Fiddle

关于您就读的学校的前两个问题显示/隐藏其他问题。

因此,根据前两个问题的答案,有 4 种可能的情况:

仅回答始终显示的问题 回答始终显示的问题以及高中问题 回答始终显示的问题以及小学问题 回答始终显示的问题以及小学和高中问题

为了动态循环需要回答的问题,我需要构建一系列可见的问题(不包括有关您就读哪所学校的问题)。

$(document).ready(function() {

  // INITALISE OPTIONAL QUESTION GROUPS HIDDEN
  $('.form-group.highschoolquestions').hide();
  $('.form-group.elementaryschoolquestions').hide();


  // SHOW/HIDE HIGH SCHOOL QUESTIONS
  $(document).on('change', '.selectpicker.highschool', function() {
console.log('high school changed');
if ($('.selectpicker.highschool').val() == 1) {
  $('.form-group.highschoolquestions').show();
}
if ($('.selectpicker.highschool').val() == 0) {
  $('.form-group.highschoolquestions').hide();
}
});

  // SHOW/HIDE ELEMENTARY SCHOOL QUESTIONS
  $(document).on('change', '.selectpicker.elementaryschool', function() {
    if ($('.selectpicker.elementaryschool').val() == 1) {
      $('.form-group.elementaryschoolquestions').show();
    }
if ($('.selectpicker.elementaryschool').val() == 0) {
  $('.form-group.elementaryschoolquestions').hide();
}

var questionsVisible = [];
$(document).on('change', '.selectpicker.schoolgroup', function() {
  // I WANT TO SCORE ONLY THE VISIBLE QUESTIONS - HOW TO CONSTRUCT AN ARRAY TO DO THIS?
  $('.selectpicker.highschoolquestion:visible').each(function() {
    questionsVisible.push(this);
    console.log('pause');
    });
  });
 });
});

最佳答案

这是可行的解决方案:

Fiddle

$(document).ready(function() {

  // INITALISE OPTIONAL QUESTION GROUPS HIDDEN
  $('.form-group.highschoolquestions').hide();
  $('.form-group.elementaryschoolquestions').hide();


  // SHOW/HIDE HIGH SCHOOL QUESTIONS
  $(document).on('change', '.selectpicker.highschool', function() {
    console.log('high school changed');
    if ($('.selectpicker.highschool').val() == 1) {
      $('.form-group.highschoolquestions').show();
    }
    if ($('.selectpicker.highschool').val() == 0) {
      $('.form-group.highschoolquestions').hide();
    }
  });

  // SHOW/HIDE ELEMENTARY SCHOOL QUESTIONS
  $(document).on('change', '.selectpicker.elementaryschool', function() {
    if ($('.selectpicker.elementaryschool').val() == 1) {
      $('.form-group.elementaryschoolquestions').show();
    }
    if ($('.selectpicker.elementaryschool').val() == 0) {
      $('.form-group.elementaryschoolquestions').hide();
    }

  });
      $(document).on('change', 'select', function() {
      // I WANT TO SCORE ONLY THE VISIBLE QUESTIONS - HOW TO CONSTRUCT AN ARRAY TO DO THIS?
      var total = 0;
      $('.score-select select:visible').each(function() {
       var val = parseInt($(this).val())
        total += val > 0 ? val :0;
        console.log('pause');
      });
      $('#todayscore').val(total);
    });
});

关于JavaScript 动态评分矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46460709/

相关文章:

javascript - 如何对数组进行分组

javascript - 如何过滤 HTML 表格中的“开始”和“结束”日期?

javascript - 如何在 href 上传递变量?

java - 将android-opengl上的触摸转换为ray/vector并检查是否碰到飞机

matlab - 如何在 Matlab 中比较两个不同维度的矩阵并获得相等行的频率?

python - 删除 array([]) 括号为矩阵方程创建干净的数组

javascript - 带有 javascript 的多功能 xml 属性正则表达式

javascript - spin.js 在长时间运行的任务期间不会显示,但在我单步执行调试器时会显示

javascript - e.keyCode 和 e.which 有什么区别?

javascript - 如何使用页面滚动将谷歌地图背景滚动/向下滑动到 View 中