多个DropDownLists - 使用ID调用单个函数

时间:2010-08-25 20:46:59

标签: javascript asp.net drop-down-menu

我有以下代码,根据所选的单选按钮切换一对DropDownLists中的一个的可见性。这段代码有效但我的问题是我在一个表单上有几组这样的控件。我怎样才能使用单个JavaScript Toggle()函数,而不管触发它的RadioButtonList的ID是什么?

function Toggle() 
{
    var list = document.getElementById("produceDDL");
    var inputs = list.getElementsByTagName("input");

    var selected;
    for (var i = 0; i < inputs.length; i++) 
    {
        if (inputs[i].checked) 
        {
            selected = inputs[i];
            break;
        }
    }

    if (selected.value == 'Vegetables') 
    {
        div1.style.display = 'none';
        div2.style.display = 'block';
    }
    else 
    {
        div1.style.display = 'block';
        div2.style.display = 'none';
    }
}

    <asp:radiobuttonlist ID="produceDDL" OnClick="javascript:Toggle();" 
        RepeatDirection="Horizontal" runat="server">
        <asp:ListItem Selected="True">Fruit</asp:ListItem>
        <asp:ListItem>Vegetables</asp:ListItem>
    </asp:radiobuttonlist>

    <div id="div1">
        <asp:DropDownList ID="fruitDDL" Width="120" runat="server">
            <asp:ListItem>Select</asp:ListItem>
            <asp:ListItem>Apples</asp:ListItem>
            <asp:ListItem>Oranges</asp:ListItem>
        </asp:DropDownList>
    </div>

    <div id="div2" style="display:none;">
        <asp:DropDownList ID="vegDDL" Width="120" runat="server">
            <asp:ListItem>Select</asp:ListItem>
            <asp:ListItem>Onions</asp:ListItem>
            <asp:ListItem>Potatoes</asp:ListItem>
        </asp:DropDownList>
    </div>

1 个答案:

答案 0 :(得分:1)

让单选按钮列表将自身作为函数参数传递。

OnClick="javascript:Toggle(this);"

然后你可以替换

function Toggle() 
{
    var list = document.getElementById("produceDDL");
    // ...

通过

function Toggle(list) 
{
    // ...

这样您就可以在其他单选按钮列表中使用OnClick="javascript:Toggle(this);"


顺便说一下,javascript:伪协议是不必要的,而普通的JavaScript命名约定是函数名应该以小写开头。我也会对它进行消毒:)