Ошибка при попытке суммировать значения с циклом for - PullRequest
0 голосов
/ 16 сентября 2018

Каждый раз, когда он запускался, давал мне время! бесконечный цикл. ошибка может быть во втором цикле, но я уже пытался сделать это снаружи и все еще выдает ошибку.

Не можете найти ошибку, какая-либо помощь?

спасибо

По-прежнему возникают проблемы с печатью значений, любая помощь?

Я пытаюсь получить все значения и сумму, после чего выведите сумму с новой переменной.

college.Debug.setWebContentsDebuggingEnabled(true);


var workflow_value = [
    'Enter Value 1',
    'Enter Value 2',
    'Enter Value 3'
]

var questionsAndValues = {};

for (var i = 0; i < workflow_value.length; i++) {
    var fieldName = workflow_value[i];
    var fieldValue = college.getJobWorkflowValueByName(fieldName);
    if (fieldValue && fieldValue != '') {
        questionsAndValues[fieldName] = fieldValue;
    }
}

var values = [];
var sumOfValues = 0;


for (value in questionsAndValues){

    var current_value = parseFloat(questionsAndValues[value]);
    if (!isNaN(current_value)) {
        sumOfValues += current_value;
    } 
    else {
        console.log('invalid values');
    }
}

questionsAndValues['Total Value'] = sumOfValues;

var okShowText = function(){

};

var cancelShowText = function(){

};



$(document).ready( function() {

   college.Dialog.showProgressDialog('Loading Data...');

    for (var question in questionsAndValues){
        var rowToAppend =   '<div style="min-height:40px;border-bottom: solid 1px gray"><div style="min-width:38%; max-width:38%; display:inline-block; height:40px; border-right: solid 1px gray"><div style="padding:5%">' +  question + '</div></div>' + 
                            '<div style="min-width:60%; max-width:60%; display:inline-block; margin-left:5px"><div>' +  questionsAndValues[question] + '</div></div></div>'

        $('#detailsView').append(rowToAppend);
    }
    console.log(JSON.stringify(questionsAndValues)); 
    console.log(sumOfValues);
    college.Dialog.hideProgressDialog();

        // console.log (sumOfValues);
    var options = {
        "title":"Total of values is",
        "text": "The total value is " + sumOfValues,
        "ok_label":"Yes",
        "cancel_label":"Do Nothing"
    }

    college.Dialog.showText("okShowText","cancelShowText",options) 

});

1 Ответ

0 голосов
/ 16 сентября 2018

переменных относятся к функции, поэтому все ваши var i s взаимодействуют с одной и той же переменной.Поэтому, когда работает внутренний цикл, он сбрасывает счетчик внешних циклов.Если вместо этого вы используете let, то они будут иметь область видимости блока и не будут растоптывать друг друга.

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

for (let i = 0; i < workflow_value.length; i++) {
  const fieldName = workflow_value[i];
  const fieldValue = college.getJobWorkflowValueByName(fieldName);
  if (fieldValue && fieldValue != '') {
    questionsAndValues[fieldName] = fieldValue;
  }

  const values = [];
  let sumOfValues = 0;

  for (let j = 0; i < workflow_value; j++) {
    const current_value = college.getJobWorkflowValueByNam(workflow_value[j]);
    values.push(current_value);
  }


  for (let j = 0; j < values.length; j++) {
    const current_value = parseFloat(values[j]);
    if (!isNaN(current_value)) {
      sumOfValues += parseFloat(values[j]);
    } else {
      console.log('invalid values');
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...