隐藏的css元素不随javascript更改.show()

时间:2014-11-26 21:29:39

标签: javascript jquery css asp.net

我有一个我在初始化时隐藏的下拉列表,因为除非客户端实际选择特定的radiobuttonlist对象,否则不需要它。我目前通过

将其设置为false
dlInterval.Attributes.CssStyle[HtmlTextWriterStyle.Visibility] = "hidden";

但是,尝试通过选择时的javascript来改变这一点,是失败的,目前,我已将我的代码设置为执行。

<script type="text/javascript" language="javascript">
    $(document).ready(function () {          
        $("#<%=rblVectorChoices.ClientID%>").click(function() {
            var intVectorSelectedIndex = $('#<%=rblVectorChoices.ClientID %> input[type=radio]:checked').val();
            $("#<%=dlInterval.ClientID %>").style.visibility="visible";
            if (intVectorSelectedIndex == 1) {
                $("#<%=dlInterval.ClientID%>").show();
            } else {
                $("#<%=dlInterval.ClientID%>").hide();
            }
        });
    });
</script>

正如您所看到的,我目前正在尝试将隐藏的可见性更改为可见,但我在浏览器控制台中收到错误&#39; TypeError:无法设置属性&#39 ;能见度&#39;未定义的&#39;

这对我来说没有多大意义,因为字段应该被隐藏,而不仅仅是null。导致这种情况发生的原因是什么,这样的事情有什么好的解决方案?

3 个答案:

答案 0 :(得分:3)

HTML属性不称为visibility

在CSS中,.show() / .hide()的相应属性为display

答案 1 :(得分:2)

您要查找的代码是:

 dlInterval.Attributes.CssStyle["display"] = "none";

或者你可以改变javascript看起来像,我个人会认为你应该在javascript中隐藏元素,如果你要在javascript中显示它。而不是在.Net代码中设置display:none;,在呈现页面时它将消失

只需重新编写代码:

<script type="text/javascript" language="javascript">
    $(document).ready(function () {  

        // hide element initially
       $("#<%=dlInterval.ClientID%>").hide();     

        $("#<%=rblVectorChoices.ClientID%>").click(function() {

             // much easier way to check if check box is checked
            if ( $("#<%=rblVectorChoices.ClientID input[type=radio]:checked%>").is(":checked)) {
                $("#<%=dlInterval.ClientID%>").show();
            } else {
                $("#<%=dlInterval.ClientID%>").hide();
            }
        });
    });
</script>

另外,我强烈建议使用类来使用javascript或jquery选择你的html元素,.Net破坏了id,你必须写出这个奇怪的语法才能获得正确的id,使用类可以防止所有这些

注意:如果您要使用第二个示例,那么您永远不需要弄乱

   dlInterval.Attributes.CssStyle["display"] = "none";

答案 2 :(得分:0)

你可以使用道具并比较它是真还是假?此外,你不能调用$(“#&lt;%= dlInterval.ClientID%&gt;”)。style.visibility =“visible”;你必须这样称呼它:

对于那些回忆丢失的.NET内联ID的人来说,这是我修改后的代码:

$(document).ready(function () {
    $("#<%=rblVectorChoices.ClientID%>").click(function () {
        var intVectorSelectedIndex = $('#<%=rblVectorChoices.ClientID%>').prop('checked');
        $("#<%=dlInterval.ClientID%>").css('visibility', 'visible');
    if (intVectorSelectedIndex == true) {
        $("#<%=dlInterval.ClientID%>").show();
    } else {
        $("#<%=dlInterval.ClientID%>").hide();
    }
});