在这种情况下,如何在javascript中访问函数内部的变量?

在这种情况下,如何在javascript中访问函数内部的变量?,javascript,Javascript,我正在访问javascript变量,但无法使用以下代码访问它 <script type="text/javascript"> function msg1(a) { var1=a; } function msg2(b) { var2=b; } </script> <input type="radio" name="people" onfocus="msg1(this.value);" value="2"> <inp

我正在访问javascript变量,但无法使用以下代码访问它

<script type="text/javascript">
function msg1(a)
{
        var1=a;

}

function msg2(b)
{
        var2=b; 

}
</script>

<input type="radio" name="people" onfocus="msg1(this.value);" value="2">
<input type="radio" name="rating" onfocus="msg2(this.value);" value="5">

<script type="text/javascript"> 
        if(var1==2 && var2==5)
        document.getElementById("scores").innerHTML='511';  
</script>

函数msg1(a)
{
var1=a;
}
函数msg2(b)
{
var2=b;
}
if(var1==2&&var2==5)
document.getElementById(“分数”).innerHTML='511';
但是,当我直接调用函数时,代码将运行,而不是通过onfocus事件调用函数。正在运行的代码是:-

<script type="text/javascript">
    function msg1(a)
    {
            var1=a;

    }

    function msg2(b)
    {
            var2=b; 

    }
    msg1(2);
    msg2(5);
            if(var1==2 && var2==5)
            document.getElementById("scores").innerHTML='511';  
    </script>

函数msg1(a)
{
var1=a;
}
函数msg2(b)
{
var2=b;
}
msg1(2);
msg2(5);
if(var1==2&&var2==5)
document.getElementById(“分数”).innerHTML='511';

我无法找出代码中不起作用的错误是什么。请告诉我。

这是一个时间问题

  • 当页面加载时,尝试读取变量
  • 当输入接收焦点时,尝试设置变量
由于在您尝试读取它们时尚未设置它们,因此会出现错误

你再也不会尝试去读了

您必须先设置它们,然后才能读取它们


在更改变量值的事件处理程序中,移动用于测试变量值的逻辑


您还应该在加载页面时声明它们(并可能为它们提供默认值)。否则,第一个事件处理程序将尝试设置其中一个,然后读取两个(在这一点上,一个将被取消声明,您仍然会得到一个引用错误)。

有一点相关:,您正在设置全局变量,这可能有点危险。@Cerbrus-不,这与范围无关。@Quentin:啊,您是对的。完全忽略了焦点。至少我没有mjolnir,我认为一个简单的
var1=0,var2=0之前,函数msg1(a)
将使其工作@昆汀已经给出了同样的解释。@obsergeek-不,这将阻止它出错。它无法工作,因为当值更改时,不会重新运行IF-THEN innerHTML代码。