このコードは主に楽しいものです。基本的には、配列の最初の4つの値と配列のすべての値に与えられた数を乗じた数を入力することができます。それが実行された後、プログラムは別の関数を呼び出して中間の数値が奇数の配列になるか計算し、偶数の配列の2つの中間の数値の平均を求め、その値をユーザーに返します。これは、配列がユーザーの番号で乗算された後に配列に加えられる前に、配列に対してこれを行うことになっています。コードは、配列内で値の数が奇数である場合、元の配列と変更された配列で使用されたときに正常に実行されます。しかし、修正された配列が偶数の場合、問題に遭遇します。 2つの中間数値の平均を返すのではなく、何らかの理由で値のNaNを返します。これは、変更されたアレイ上でのみ発生し、なぜそれが不思議に思っていましたか?ここに私のコードの2つのコピーがあります。最初の配列は奇数で、2番目の配列は偶数です。どんな助けもありがとう。ありがとう!JavaScript配列の値にNaNの結果に変換する問題
<!DOCTYPE HTML>
<html lang="en-us">
<head>
<meta charset="utf-8">
<title>Add Middle Array</title>
<script type="text/javascript">
function collectdata() {
var list = [0, 0, 0, 0, 5];
list[0] = parseFloat(document.getElementById("pokemon").value);
list[1] = parseFloat(document.getElementById("digimon").value);
list[2] = parseFloat(document.getElementById("transformers").value);
list[3] = parseFloat(document.getElementById("workers").value);
var multiply = parseFloat(document.getElementById("multi").value);
var outcome = multiplier(list, multiply);
var spaceoutcome = outcome;
for (i = 0; i < outcome.length; i++) {
spaceoutcome[i] = " " + spaceoutcome[i];
}
document.getElementById("output1").innerHTML = spaceoutcome;
var sumofmiddle = sum(list);
document.getElementById("output2").innerHTML = sumofmiddle;
var sumofmodmid = sum(outcome);
document.getElementById("output3").innerHTML = sumofmodmid;
}
function multiplier(L, M) {
var money = [];
for (i = 0; i < L.length; i++) {
money[i] = (L[i] * M);
}
return money;
}
function sum(L){
var outcome = 0;
if (L.length % 2 == 0)
{
outcome = ((L[L.length/2] + L[((L.length/2) - 1)])/2);
}
else
{
outcome = L[((L.length - 1)/2)];
}
return outcome;
}
</script>
</head>
<body>
Please enter in a list of four values to be muliplied with the final value always being 5. <br>
<input type="text" id="pokemon"><br>
<input type="text" id="digimon"><br>
<input type="text" id="transformers"><br>
<input type="text" id="workers"><br><br>
Please enter the multiplier.<br><br>
<input type="text" id="multi"><br><br>
<button type="button" onclick="collectdata()">Click here to multiply values</button>
<div id="output1"></div><br><br>
Bonus! Here is the average of the middle numbers of the arrays!<br>
<div id="output2"></div><br><br>
Final Surprise! Here is the average of the multiplied modified numbers!<br>
<div id="output3"></div>
</body>
</html>
ここでは誤動作している偶数番号の配列です。
<!DOCTYPE HTML>
<html lang="en-us">
<head>
<meta charset="utf-8">
<title>Add Middle Array</title>
<script type="text/javascript">
function collectdata() {
var list = [0, 0, 0, 0, 5, 6];
list[0] = parseFloat(document.getElementById("pokemon").value);
list[1] = parseFloat(document.getElementById("digimon").value);
list[2] = parseFloat(document.getElementById("transformers").value);
list[3] = parseFloat(document.getElementById("workers").value);
var multiply = parseFloat(document.getElementById("multi").value);
var outcome = multiplier(list, multiply);
var spaceoutcome = outcome;
for (i = 0; i < outcome.length; i++) {
spaceoutcome[i] = " " + spaceoutcome[i];
}
document.getElementById("output1").innerHTML = spaceoutcome;
var sumofmiddle = sum(list);
document.getElementById("output2").innerHTML = sumofmiddle;
var sumofmodmid = sum(outcome);
document.getElementById("output3").innerHTML = sumofmodmid;
}
function multiplier(L, M) {
var money = [];
for (i = 0; i < L.length; i++) {
money[i] = (L[i] * M);
}
return money;
}
function sum(L){
var outcome = 0;
if (L.length % 2 == 0)
{
outcome = ((L[L.length/2] + L[((L.length/2) - 1)])/2);
}
else
{
outcome = L[((L.length - 1)/2)];
}
return outcome;
}
</script>
</head>
<body>
Please enter in a list of four values to be muliplied with the final value always being 5. <br>
<input type="text" id="pokemon"><br>
<input type="text" id="digimon"><br>
<input type="text" id="transformers"><br>
<input type="text" id="workers"><br><br>
Please enter the multiplier.<br><br>
<input type="text" id="multi"><br><br>
<button type="button" onclick="collectdata()">Click here to multiply values</button>
<div id="output1"></div><br><br>
Bonus! Here is the average of the middle numbers of the arrays!<br>
<div id="output2"></div><br><br>
Final Surprise! Here is the average of the multiplied modified numbers!<br>
<div id="output3"></div>
</body>
</html>
本当にありがとうございました!あなたの事例は多くの助けとなり、正しい答えに導かれました。代わりにparseFloatを使用することにしました。これは、プログラムがしばしば分数になるためです。私は助けに感謝します! –