如何在变量

时间:2015-07-14 07:20:14

标签: javascript jquery asp.net .net

我有7个复选框7周,并在页面上分开7天的时间选择器。选中复选框后,我想显示该工作日的时间选择器,如果未选中,我想隐藏相应的时间选择器

我使用了以下代码来实现这一点,而且它也在运行。

function Chk_WeekDay_Clicked(ctrl, week) {
    if (ctrl.checked) {
        if (week == "Monday")
            document.getElementById("<%= Tm_Monday_From.ClientID %>").style.display = "";
        else if (week == "Tuesday")
            document.getElementById("<%= Tm_Tuesday_From.ClientID %>").style.display = "";
        else if (week == "Wednesday")
            document.getElementById("<%= Tm_Wednesday_From.ClientID %>").style.display = "";
       //Rest of the days 
    }
    else{
        if (week == "Monday")
            document.getElementById("<%= Tm_Monday_From.ClientID %>").style.display = "none";
        else if (week == "Tuesday")
            document.getElementById("<%= Tm_Tuesday_From.ClientID %>").style.display = "none";
        else if (week == "Wednesday")
            document.getElementById("<%= Tm_Wednesday_From.ClientID %>").style.display = "none";
        //Rest of the days 
    }
}

Chk_WeekDay_Clicked是所有工作日复选框的事件处理程序。第一个参数是Clicked CheckBox控件,第二个参数是工作日的名称。

所有时间选择器控件的名称具有相同的命名模式, Tm_ [WeekName] _From

所以,我的问题是不是使用这些很多if-else我可以用几行来做吗?类似下面的代码。

function Chk_WeekDay_Clicked(ctrl, week) {
    //I want this controlId by using parameter. And I must get it by ClientID as I am using it on page having MasterPage.
    var controlId = "Tm_" + week + "_From";
    if (ctrl.checked) {
        document.getElementById(controlId).style.display = "";
    }
    else {
        document.getElementById(controlId).style.display = "none";
        }
}

我的实际问题是如何在变量中获得Control的ClientId。作为使用母版页的我的页面,我必须使用ClientID来获取控件ID。

那么,任何人都可以为此建议解决方案

2 个答案:

答案 0 :(得分:2)

ClientID由ASP.NET生成,无法使用JavaScript变量创建。但是你可以做这样的事情

function Chk_WeekDay_Clicked(ctrl, week) {

    //Since Client ID is generated by ASP.NET
    //Create a list of ids
    var controls  = {
        "monday" : "<%= Tm_Monday_From.ClientID %>",
        "tuesday" : "<%= Tm_Tuesday_From.ClientID %>",
        "wednesday" : "<%= Tm_Wednesday_From.ClientID %>",
    }

    //Fetch Control ID
    var controlId = controls[week.toLowerCase()];

    //Desired operation
    if (ctrl.checked) {
        document.getElementById(controlId).style.display = "";
    }
    else{
        document.getElementById(controlId).style.display = "none";
    }
}

答案 1 :(得分:0)

如果您对该功能passing controldirectly可以访问properties control {/ 1}}。{/ 1>

function Chk_WeekDay_Clicked(ctrl, week) {
    if (ctrl.checked) 
        ctrl.style.display = "";
    else 
        ctrl.style.display = "none";
}