Qualtrics 多表动态求和问题

Qualtrics Dynamic Sum of Multiple Tables Question

我目前有两个 table,每个都给出了一个计算总数。我目前正在尝试添加一个函数,让我可以看到这两个总数的总和。

Qualtrics.SurveyEngine.addOnload(function()
{
  var p1 = "${q://QID4/TotalSum}";
  var p2 = "${q://QID10/TotalSum}";
  document.getElementById("myBtn").addEventListener("click", function() {
    myFunction(p1,p2);
  });
  function myFunction(a,b) {
    var result = Number(a)+Number(b);
    document.getElementById("demo").innerHTML = result;
  }
});

这样做我可以获得总和值,但是只有在我转到下一页然后返回到此页面之后。有什么方法可以让我不用换页就可以得到总和值吗

我对此很陌生,如有任何帮助,我们将不胜感激。

p1 和 p2 仅在您加载页面时更新。假设 QID4 和 QID10 与 myBtn 在同一页面上,您应该在事件侦听器中获取 p1 和 p2 的值,而不是使用管道值。

确切的代码取决于常量和问题的格式以及页面上的其他内容,但它会类似于:

Qualtrics.SurveyEngine.addOnload(function()
{
  var p1 = jQuery(".SumTotal input:first"); //find total elements
  var p2 = jQuery(".SumTotal input:last");
  myFunction(p1.val(),p2.val()); //initialize total on page load
  document.getElementById("myBtn").addEventListener("click", function() {
    myFunction(p1.val(),p2.val());
  });
  function myFunction(a,b) {
    var result = Number(a)+Number(b);
    document.getElementById("demo").innerHTML = result;
  }
});

根据评论进行编辑:

一旦你超过两个,我会使用循环:

Qualtrics.SurveyEngine.addOnload(function()
{
  var totals = jQuery(".SumTotal input"); //find total elements
  myFunction(totals); //initialize total on page load
  document.getElementById("myBtn").addEventListener("click", function() {
    myFunction(totals);
  });
  function myFunction(tots) {
    var result = 0;
    tots.each(function() { result += Number(this.value); });
    document.getElementById("demo").innerHTML = result;
  }
});