Mi sono imbattuto in un problema che non riesco a risolvere. Si prega di dare un'occhiata al codice qui sotto:Il codice Javascript funziona bene ... quasi tutto il tempo
<script>
function createFunctions() {
var first = ["", "", ""];
var second = ["", "", ""];
var func = ["", ""];
var sign = ["", ""];
for (i = 0; i < 3; i++) {
first[i] = (Math.round(Math.random() * 9) + 1);
second[i] = (Math.round(Math.random() * 9) + 1);
sign[i] = (Math.round(Math.random()));
if (sign[i] == "1") {
sign[i] = '+';
} else {
sign[i] = '-';
}
if (first < 2) {
func[i] = 'f(x) = x ' + sign[i] + ' ' + second[i] + '<p>';
} else {
func[i] = 'f(x) = ' + first[i] + 'x ' + sign[i] + ' ' + second[i] + '<br>';
}
}
for (i = 0; i < 3; i++) {
document.getElementById("createFunctions").innerHTML += 'Function ' + [i + 1] + ': ' + func[i];
}
//whichFunction=
findAnswers(first, second, sign);
}
function findAnswers(first, second, sign, rand) {
var num = ["", "", ""];
rand = (Math.round(Math.random() * 1));
document.getElementById("findAnswers").innerHTML = 'Which <b>one (or more)</b> of these functions holds true, when plugged in with the following <b>values of x</b>? (' + [rand + 1] + ')<br>';
for (i = 0; i < 3; i++) {
num[i] = (Math.round(Math.random() * 9));
}
for (i = 0; i < 3; i++) {
ans = 0;
if (sign[rand] == "+") {
ans = [first[rand] * num[i]] + second[rand];
} else {
ans = [first[rand] * num[i]] - second[rand];
}
document.getElementById("findAnswers").innerHTML += [i + 1] + '. You put in a ' + num[i] + ': ' + ans + '<br>';
}
}
</script>
<BODY onload=createFunctions()>
<b>A Machine Called Effex</b>
<p><input type="button" value="New Examples" onclick="history.go(0)" VALUE="Refresh"></p>
<p id="createFunctions"></p>
<p id="findAnswers"></p>
Tutto funziona alla grande. Tranne occasionalmente, quando si calcola la funzione, il codice si moltiplica per x, quindi semplicemente concatena il secondo valore sul primo, invece di aggiungere (o sottrarre).
Non dovrebbe essere "prima [i] <2' sulla riga 15? – mynawaz
Provare a cambiare le parentesi quadre più esterne tra parentesi in "[prima [rand] * num [i]] + secondo [rand]' nella riga 36 e 38 e anche castare gli operandi in int usando parseInt su queste righe – mynawaz
cambiato gli array da 'var array = [" "," "," "]' a 'var array = []' poiché crea solo una matrice vuota e 'i' fa il resto nei cicli for. dai un'occhiata qui: http://jsfiddle.net/zzx5w79a/ forse vuoi includere questo link alla tua domanda. Non sono riuscito a trovare "occasionalmente .., il codice si moltiplica .." – caramba