在页面重新加载时处理Javascript radiobox状态

时间:2009-06-16 19:21:39

标签: javascript html

我一直在玩一个radiobox。我遇到的问题因用户使用的浏览器而异。基本上,我的目标是根据所选的radiobox在页面上生成其他数据。重要的是,这些数据与无线电控制台保持同步。通常情况下,这不是问题:我在选择更改时运行以下代码。

但是,浏览器经常缓存选中哪个复选框的方式存在问题。 IE似乎要等到脚本运行完毕然后切换选择了哪个radiobox。另一方面,Firefox会记住选中了哪个复选框并相应地显示它...但是checked属性会忽略它。我可以通过取消选中并选中复选框(下面两条注释掉的代码行)来强制Firefox保持同步信息,尽管这有点像hacky。

目前,我最好的想法是通过脚本生成无线电盒,以消除浏览器缓存它们的能力。任何人都可以提供一个不那么讨厌的选择吗?

<br />
<input type="radio" name="DataRadio" checked="checked"
    Value="V1" onclick="doDataRadio()" />V1

<br />
<input type="radio" name="DataRadio"
    Value="V2" onclick="doDataRadio()" />V2

<br />
<input type="radio" name="DataRadio"
    Value="V3" onclick="doDataRadio()" />V3

function selCountry()
{
    var len = theForm.DataRadio.length;
    for (i = 0; i < len; i++) {
        if (theForm.DataRadio[i].checked)
        {
            chosen = theForm.DataRadio[i].value;
            //theForm.DataRadio[i].checked = false;
            //theForm.DataRadio[i].checked = true;
            alert(chosen);

        }
    }
}

1 个答案:

答案 0 :(得分:2)

因为您还没有显示更多代码。我假设你想在页面加载时调用selCountry()

通常使用像 jQuery 这样的javascript库,在$(document).ready()函数中运行页面时运行一些内容,如下所示:

$(document).ready({
  selCountry();
});

没有javascript库,你需要这样:

window.onload = function(){
  selCountry();
}

这样,您可以确保在找到预先选择了哪个单选按钮之前完成页面加载。这适用于跨浏览器。