Qualtrics Dynami c Сумма нескольких таблиц Вопрос - PullRequest
0 голосов
/ 15 апреля 2020

В настоящее время у меня есть две таблицы, каждая из которых дает вычисленную сумму. В настоящее время я пытаюсь добавить функцию, которая позволит мне видеть сумму этих двух итогов.

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;
  }
});

Делая это, я могу получить значение суммы, однако только после того, как я go Следующая страница, а затем вернуться на эту страницу. Есть ли способ сделать так, чтобы я мог получить значение суммы без необходимости менять страницы.

Я очень новичок в этом, и любая помощь будет оценена, спасибо.

1 Ответ

0 голосов
/ 15 апреля 2020

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;
  }
});

РЕДАКТИРОВАТЬ НА ОСНОВЕ КОММЕНТАРИЙ:

Как только вы получите выше двух, я бы использовал al oop:

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;
  }
});
...