每一次运行都在浪费时间!无限循环。 该错误可能是在我的第二个循环中,但是我已经尝试将其移到外面并且仍然给出错误。
找不到错误,有帮助吗?
谢谢
打印值还是有问题,有帮助吗?
我尝试获取所有值和总和,然后用新的变量打印总和。
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)
});
答案 0 :(得分:1)
vars的作用域范围是函数,因此所有var i
都与完全相同的变量进行交互。因此,当一个内循环运行时,它将抛出外循环的计数。如果改用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');
}
}
}