尝试创建随机游戏,但似乎不起作用

时间:2020-10-20 12:30:08

标签: javascript

在表单操作下,我调用了文本框和按钮。假设用户键入两个值,一个是最高值,另一个是最低值,然后它将生成一个介于最低值和最高值之间的随机值。然后,用户将猜测该数字是否正确,它将打印出正确的消息

<form action="random" method="get" onSubmit="return validate()">
            Lowest number: 
            <input id="digit" type="text" name="lowestnumber" onchange="validate()"><br/>
            <br/><span id="numbers"></span>
    
            Highest number:
            <input id="digit1" type="text" name="highestnumber" onchange="validate()">
            <br/><span id="numbers1"></span>    
            
            <br/><input id="rand" type="submit" value="submit" onclick="Random()"><br/>
            <input id="guess" type="text" value="Random Number Generator">
          
            <br/>Enter your number<br/>
            <input id="textbox" type="text"><br/>
            <input id="guessing" type="button" value="Random" onclick="RandomNumber()"><br/>
            <br/><span id="correct"></span>
          
</form>

我的脚本包含要使用的方法和函数,我认为问题出在RandomNumber()函数上,我不确定我哪里出错了,但是请协助我

function validate() 
{
        
            var values = document.getElementById("digit").value;
            if(values<0)
            {
                    document.getElementById("numbers").innerHTML = "This is not a number, number must be greater or equal to zero"
                    return false
            }
            else if (!(typeof +values && values >= 0)|| values.trim() == "") 
            {
                    document.getElementById("numbers").innerHTML = "Fill in a number";
                    return false;
            }
            else if (values>=0)
            {
                    document.getElementById("numbers").innerHTML = "";
            }
        
            var values1 = document.getElementById("digit1").value;
            if(values1<0)
            {
                    document.getElementById("numbers1").innerHTML = "This is not a number, number must be greater or equal to zero"
                    return false
            }
            else if (!(typeof +values1 && values1 >= 0)|| values1.trim() == "") 
            {
                    document.getElementById("numbers1").innerHTML = "Fill in a number";
                    return false;
            }
            else if (values >= values1)
            {
                    document.getElementById("numbers1").innerHTML = "Highest number is smaller than lowest number";
                    return false;  
            }
            else if (values1 > values)
            {
                    document.getElementById("numbers1").innerHTML = "";
            }
            
            if((document.getElementById("digit").value>0) && (document.getElementById("digit1").value>0))
            {
            document.getElementById("rand").removeAttribute('disabled');
            }
            else
            {
            document.getElementById("rand").setAttribute('disabled', 'disabled');
            }
}

此功能可以在最低编号和最高编号之间生成随机数。

function Random()
        {
        
            var value1 = document.getElementById("digit").value;
            var value2 = document.getElementById("digit1").value;
            
            minvalue= Math.ceil(value1);
            maxvalue= Math.floor(value2);
            
            var random = Math.floor(Math.random()*(maxvalue-minvalue)+1+minvalue);
            document.getElementById("guess").value=random;
            
        }

这是我认为它可能导致整个程序停止工作的部分,这是在我写下这些代码并且网页没有按照我想要的方式运行之后。

function RandomNumber()
        {
            var value3 = document.getElementById("digit").value;
            var value4 = document.getElementById("digit1").value;
            
            minvalue= Math.ceil(value3);
            maxvalue= Math.floor(value4);
            
            var random1 = Math.floor(Math.random()*(maxvalue-minvalue)+1+minvalue);
            
            var maxtries=5;
            var counter=0;
            
            var true=document.getElementById("textbox").value;
            while(true!=random1)
            {
                document.getElementById("total").value=total;
                counter +=1;
                
                if(counter>maxtries)
                    {
                        document.getElementById("correct").innerHTML="No more tries"
                    }
                if(true==random1)
                    {
                        document.getElementById("correct").innerHTML="Correct"
                    }
            }
        }
    

1 个答案:

答案 0 :(得分:0)

当我查看您的代码时,会看到几个危险信号。 例如。 true是JS中的保留键,您不能为其分配值:

var true=document.getElementById("textbox").value;

这必须在开发控制台中引发错误。

在循环while(true!=random1)中也不会重新分配truerandom1,因此,如果一开始为true,则条件永远不会为假,因此在这种情况下永远不会离开循环!

通常,您应该尝试缩小问题范围,查看错误,并在提出具体问题的较小代码段上寻求帮助。像my web page doesn't perform the way I want it to be这样的语句很难提供帮助。