繁体   English   中英

变量定义问题Javascript

[英]Variable Defining Issue Javascript

我正在尝试根据他们是多少个球员来随机化一个字符串,并为每个球员分配他们的工作/角色。 在Chrome控制台中,我收到错误消息:“未捕获的ReferranceError:未定义。” 我不明白问题是什么,变量是在使用它之前定义的(在第一个按钮中定义,在第二个中使用)。 我在文档中有一个警报,证明已定义了变量,并且在按下按钮时会在参数al中指出。 HTML:

    <input maxlength="1" id="input"> <button id="gp" onclick="gp()">Start!</button>
    <br/>
    <br/>
    <button id="DJ" onclick="DJ(al, rl);BlankDisplay(al, rl)">Display Your Job!</button>
    <br/>
    <span id="DS">1) Input Amount Of Players. 2)Click 'Display Your Job!'</span>

Javascript:

function gp(){
    players = document.getElementById("input").value;
    if(isNaN(players)){
        alert(players.toUpperCase() + "'s Players? Please Fix"); 
        return;
    }
    if(players === " "){
        alert("Please Define How Many People Are Playing!");
        return;
    }
    if(players === ""){
        alert("Please Define How Many People Are Playing!");
        return;
    }
    if(players < 4){
        alert("Sorry, You Need Atleast 4 Players To Play!");
        return;
    }
    SA(players)
}
function SA(players){
    var positions = ["Murderer", "Judge", "Innocent", "Innocent"]; //Pre-set positions
    if(players == 5){
        positions.push("Co-Judge");
    }else if(players == 6){
        positions.push("Innocent", "Co-Judge"); 
    }else if(players == 7){
        positions.push("Murderer-2!", "Innocent", "Co-Judge");
    }
    Randomize(players, positions)
}
function shuffle(o){
    for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
    return o;
}
function Randomize(players, positions){
    var rl = shuffle(positions);
    var al = positions.length;
    confirm("You Have: " + al + " Players, Correct?");
    alert(al + ". " + rl);
}
function DJ(al, rl){
    var counter = 0;
    var bd = 0;
    for(var c = 0; c < al + 1; c++){
        if(counter == 0){
            document.getElementById("DS").innerHTML(rl[c]);
            document.getElementById("BJ").innerHTML("Click To Clear!");
            bd = 1;
        }
    }
}
function BlankDisplay(al, rl){
    if(bd == 1){
        document.getElementById("Click The Button Above To See Your Job!");   
    }
}

您有两个函数DJ和BlankDisplay(不要使用大写字母)都使用al和rl的参数,但是第二个函数不使用al或rl。 然后在此代码中: <button id="DJ" onclick="DJ(al, rl)您将变量al和rl传递到DJ的函数调用中,但是除非您已将var al和rl定义为窗口/全局范围,则未定义。

我猜您对变量和参数之间的区别感到困惑。 所以我将从这里开始。

从DJ参数中删除alrl 他们生活在全球范围内,无需访问DJ按钮的onclick即可访问alrl

  • 像这样更新按钮DJ<button id="DJ" onclick="DJ(); BlankDisplay();">Display Your Job!</button>
  • 在JS中的所有内容之前添加alrl ,如下所示: var al, rl;
  • 在您的Randomize中忽略var 因此: var rl = shuffle(positions); var al = positions.length; var rl = shuffle(positions); var al = positions.length; 应该变成这样: rl = shuffle(positions); al = positions.length; rl = shuffle(positions); al = positions.length;
  • 将此行function DJ(al, rl){更改为此function DJ(){
  • 将此行function BlankDisplay(al, rl){更改为此function BlankDisplay(){

这应该做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM