【发布时间】:2016-04-22 10:07:28
【问题描述】:
对不起各位,整个代码是这样的。我给了你简单的形式,但我犯了很多错误。所以,请忽略之前编写的代码并阅读此内容。
在代码的底部,您还可以找到对函数的调用(它们在另外两个文件.html 中)
问题在于三个“window.alert”显示的值(在第二个函数运行期间)是未定义的,因为顶部没有三个声明的 var 或者它们不是全局的(var numero_giocatori ; var numero_lupi; var numero_villici;)
(对不起,我多次更改编辑。请对新手好一点;-))
enter code here
//--------------------------------------------------------------------------------------------------------------//
// IMPOSTAZIONI: NUMERO DI GIOCATORI //
//--------------------------------------------------------------------------------------------------------------//
var numero_giocatori;
var numero_lupi;
var numero_villici;
function validatore_numero_giocatori(numero_giocatori) {
var scritta_output;
numero_giocatori = document.getElementById("digitazione_numero_giocatori").value;
if (numero_giocatori < 8 || numero_giocatori > 24) {
scritta_output = "Hai inserito un numero minore di 8 o maggiore di 24";
}
else if (isNaN(numero_giocatori)) {
scritta_output = "Non hai inserito un numero. <br> Inserire un numero da 8 a 24";
}
else {
scritta_output = "OK!";
alert(numero_giocatori);
window.open("/home/enrico/Scrivania/cod-x/lup-x/gioco/impostazioni: numero lupi vs numero villici.html","_self");
}
document.getElementById("validazione").innerHTML = scritta_output;
return numero_giocatori;
}
//--------------------------------------------------------------------------------------------------------------//
// IMPOSTAZIONI: NUMERO DI LUPI VS VILLICI //
//--------------------------------------------------------------------------------------------------------------//
function scelta_modalità_di_selezione (numero_giocatori) {
if (document.getElementById("proporzioni_random").checked){ //proporzionale random
numero_lupi = Math.floor(Math.round(Math.random()*1) + numero_giocatori/4); //osservare bene il codice!!!
numero_villici = numero_giocatori - numero_lupi;
alert(numero_giocatori);
alert(numero_lupi);
alert(numero_villici);
}
else{
alert("Ciao, ti ricordi di me?");
}
window.open("/home/enrico/Scrivania/cod-x/lup-x/gioco/impostazioni: creazione personaggi.html","_self");
}
//FIRST CALL HTML
<div id = "form1">
Numero Giocatori:<input type="text" name="numero" id="digitazione_numero_giocatori"><br><br>
<div>
Inserire un numero di giocatori da 8 a 24
<p id="validazione"></p>
</div>
<button type="button" onclick="validatore_numero_giocatori(numero_giocatori)">Avanti</button>
</div>
//SECOND CALL HTML
<div id = "form2">
Seleziona la modalità di gioco<br>
<div>
Random. lupi circa 1/4:<input type="checkbox" id="proporzioni_random"><br>
Digita il numero dei lupi:<input type="text" id="proporzioni_a_scelta">
</div>
<button type="button" onclick="scelta_modalità_di_selezione()">Avanti</button>
</div>
【问题讨论】:
-
你从哪里得到
scritta_output? -
你在哪里打电话
scelta_modalità_di_selezione?你认为你在哪里改变numero_giocatori的值? -
validatore_numero_giocatori()被称为按钮的onclick,没有任何参数。这也是您的函数签名,因此numero_giocatori将是未定义的。你在全局范围内声明它,否则你会得到一个ReferenceError。 -
对不起,我使用了更短的代码,以免您阅读过多。 1.“scritta_output”不是问题,在长代码中它可以工作。 2. "scelta_modalità_di_selezione" 在另一个 HTML 文件中被调用。我使用打开的同一个文件:window.open("/home/enrico/Scrivania/cod-x/lup-x/gioco/impostazioni: numero lupi vs numero villici.html","_self");
-
那么,现在的问题是,你卡在哪里了? :D
标签: javascript scope global