离开if语句后Javascript变量重置?

时间:2012-03-29 15:43:20

标签: javascript

我是具有C#背景的javascript的新手,所以当我偶然发现以下情况时,我很感兴趣:

编辑:我已经包含了复制该问题的原始文本。警报文本显示为“未定义”。我正确查询收音机吗?

的index.html

<html>
    <head>
        <script type="text/javascript" src="scripts.js"></script>
    </head>

    <body>
        <form>
            10 <input type="radio" name="group1" value="10"></br>
            20 <input type="radio" name="group1" value="20"></br>
            30 <input type="radio" name="group1" value="30"></br>
            <input type="button" value="Submit" onclick="buttonPressed()">
        </form>
    </body>
</html>

scripts.js中

function buttonPressed()
{

var radios = document.getElementsByName("group1");
var checkedRadio;

for(var i in radios)
{
    if(radios[i].checked)
    {
        checkedRadio = i;
    }
}

var tipAmount;

if(checkedRadio == 0)
{
    tipAmount = 10;
}
if else(checkedRadio == 1)
{
    tipAmount = 20;
}
if else(checkedRadio == 2)
{
    tipAmount = 30;
}

alert(tipAmount);
}

为什么alertText未定义?

由于

2 个答案:

答案 0 :(得分:1)

JavaScript没有块范围,只有函数范围。所以你给我们的代码就可以了。

答案 1 :(得分:0)

此代码应该可以使用,我建议您下载Firebug,这样您就可以访问脚本并在第一行放置一个断点并按F10来调试每一行,你应该快速找到错误或告诉我们它的作用。

你可以试试像这样的循环

for( i = 0; i < radios.length; i++ ) 
{
    if(radios[i].checked)
    {
       checkedRadio = i;
    }

}

此外,您可以使用复选框中的值,而不是对提示进行硬编码。

你有jquery吗?

你可以像这样做一些简单的事情

$('.group1:checked').each(function() {
tip = this.val();
});