【问题标题】:Put a value outside a Function in a global var将一个值放在一个函数之外的全局变量中
【发布时间】: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


【解决方案1】:
  function validatore_numero_giocatori(numero_giocatori) {
  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;
  }

您需要将 var "numero_giocatori" 传递给函数。

函数验证器_numero_giocatori(numero_giocatori)

然后这样称呼它:

validatore_numero_giocatori(numero_giocatori)

【讨论】:

  • 谢谢我尝试将“(numero_giocatori)”作为参数并在调用中添加(如您所建议的那样),但它不起作用。我重新发布了代码,因为粘贴它(第一次)我犯了一些错误。对不起。
【解决方案2】:

用这个替换你的函数: 您需要访问输入元素的值。

function validatore_numero_giocatori() {
  numero_giocatori = document.getElementById('digitazione_numero_giocatori').value;
  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;
}

【讨论】:

  • 你说得对,我刚用过。我在粘贴代码时出错了。您可以在上面找到正确的代码。对不起。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多