函数外部的javascript getElementById不起作用

函数外部的javascript getElementById不起作用,javascript,function,variables,scope,getelementbyid,Javascript,Function,Variables,Scope,Getelementbyid,我对javascript比较陌生,所以我制作了这个简单的猜测数字程序。我的问题是: 为什么它只有在以下情况下才起作用: var myNumber=document.getElementById(“myNumber”).value 是在函数中定义的。我认为,如果它是在函数之外定义的,那么它将具有“在函数中使用的b的范围?” 谢谢你的帮助 输入您的号码1-10 去 document.getElementById(“btn1”).onclick=function(){ var myNumber=do

我对javascript比较陌生,所以我制作了这个简单的猜测数字程序。我的问题是:

为什么它只有在以下情况下才起作用:

var myNumber=document.getElementById(“myNumber”).value

是在函数中定义的。我认为,如果它是在函数之外定义的,那么它将具有“在函数中使用的b的范围?”

谢谢你的帮助

输入您的号码1-10

去 document.getElementById(“btn1”).onclick=function(){ var myNumber=document.getElementById(“myNumber”).value; var number=parseInt(myNumber); var计数=1; var computerGuess=Math.floor((Math.random()*10)+1); while(computerGuess!==数字){ computerGuess=Math.floor((Math.random()*10)+1); 计数++; } 警报(“你在“+count+”猜中猜到了“+”); }
在全局范围内使用document.getElementById时,如果 脚本位于要访问的元素之上。因为它可以在创建元素之前按id获取元素 解决方案1.在所有元素的最后使用所有脚本标记 解决方案2.使用这种方式

<!DOCTYPE html>
<html>

<body>
<script>
var globalElm;
function start(){
    globalElm = document.getElementById('elm')
}
setTimeout(start,50);
</script>
<div id="elm"></div>
</body>

</html>

球形变种;
函数start(){
globalElm=document.getElementById('elm')
}
设置超时(开始,50);

您可以让计算机猜测用户输入的数字,而不是相反。您需要再次询问,但不要在while循环中询问。让用户每次单击按钮,当用户猜到一个新的随机数或尚未猜测(加载时)时,获取一个新的随机数.创建一个
init
函数,并在onclick外调用它onload,然后在正确的猜测中再次调用它:回答您的问题:如果您将
var myNumber=document.getElementById(“myNumber”)放入.value;
在click事件处理程序之外,当页面加载时,它只运行一次。因此,当用户单击时,没有值,也不会有任何值。哦,是的,我现在知道了。感谢您的解释。这只是解释如何使用SetTimeOut创建具有dom元素的gloabl变量。完全不需要tim除非op想限制用户回答问题的速度,否则不要回答这个问题。你只是混淆了一个noob。而且它不在元素之上