Articulate Storyline 2 (eLearning 迅速な開発ソフトウェア) で構築した eLearning モジュール内で実行する JavaScript を作成しました。このコードは計算機として機能することを意図しており、会社が新入社員の入社式を実施するのにかかる費用を出力します。
ユーザーは、ブラウザーの Storyline プレーヤー/eLearning モジュールに数字を入力します。コードはこれらの入力を取得し、変数に格納します。この情報は計算を行うために使用され、ユーザーはブラウザーの最終画面で結果を取得します。
奇妙なことに、JavaScript はローカルでは問題なく実行されますが、サーバーにアップロードされると、結果は常にゼロとして返されます。なぜこれが起こっているのかわかりません。
また、数値は常に整数です。彼らは£13,553.99のようなものとして戻ってくることはありません. 通常は最も近い整数に丸められます (例: £13,554.00)。
誰かが私にアドバイスをくれるなら、本当に感謝します。コードとコメントを含めたので、私が行ったことを確認できます。さらに詳しい情報が必要な場合は、お知らせください。
// Retrieve variables from Storyline file.
var player=GetPlayer();
// Assign Storyline variables to JS variables. Each letter represents a data entry box in the elearning module.
var aa = player.GetVar("a");
var bb = player.GetVar("b");
var cc = player.GetVar("c");
var dd = player.GetVar("d");
var ee = player.GetVar("e");
var ff = player.GetVar("f");
var gg = player.GetVar("g");
var hh = player.GetVar("h");
var ii = player.GetVar("i");
var jj = player.GetVar("j");
var ll = player.GetVar("l");
var qq = player.GetVar("q");
// Convert strings to integers
var aa = parseInt(aa);
var bb = parseInt(bb);
var cc = parseInt(cc);
var dd = parseInt(dd);
var ee = parseInt(ee);
var ff = parseInt(ff);
var gg = parseInt(gg);
var hh = parseInt(hh);
var ii = parseInt(ii);
var jj = parseInt(jj);
var ll = parseInt(ll);
var qq = parseInt(qq);
// Add comma to thousands.
function addCommas(nStr)
{
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}
// Use the numbers stored in the variables to do the induction calculations.
// # per month
var mm = aa * 12;
// £ new recruit/hr + £ trainer/hr
var ss = bb + cc;
// Duration mins
var nn = dd / 60;
// (Room booking admin mins + admin records) / 60 * £ admin/hr
var oo = (ee + gg) / 60 * ff;
// Repeating hrs/month
var pp = jj * (bb + cc);
// # of trainers
var rr = (ll * qq) * (cc + cc);
//Results calculations
var tt = (ss * nn) + oo;
var uu = tt + hh + ii;
var vv = uu * mm;
var ww = pp * 12;
// Calculate final result, round to 2 decimal places and convert number to a string. Add comma to define thousands.
var total = vv + ww + rr;
var totalRnd = total.toFixed(2);
var totalStr = totalRnd.toString();
var totalCost = addCommas(totalStr);
// Sends result back to Storyline.
player.SetVar("result",totalCost);
更新: parseFloat() の代わりに parseInt() を使用します。これにより、整数の問題が説明されます。