none
哪位帮我看看以下语句为什么不起作用? RRS feed

  • 问题

  • <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head runat="server">
    
        <title></title>
    
        <script type="text/javascript">
    
            function a() {
    
                var yuan_Height = document.getElementById("txt_Cc").style.height; //获取原始高度
    
                var a = document.getElementById("btn").value;
    
                if (a == "展开") {
    
                    document.getElementById("txt_Cc").style.height = document.getElementById("txt_Cc").scrollHeight + "px";
    
                    document.getElementById("btn").value = "收起";
    
                }
    
                else if (a == "收起") {
    
                    document.getElementById("txt_Cc").style.height = yuan_Height; //这句话为什么没起作用
    
                    document.getElementById("btn").value = "展开";
    
                }
    
            }
    
        </script>
    
    </head>
    
    <body>
    
        <form id="form1" runat="server">
    
        <div>
    
            <table cellpadding="2" cellspacing="0" style="width: 95%;" id="t">
    
                <tr>
    
                    <td style="border:solid 1px #000000;">
    
                        <asp:TextBox ID="txt_Cc" runat="server" BorderWidth="0px" Width="100%" TextMode="MultiLine"
    
                            Style="overflow-y: auto;" Height="60px"></asp:TextBox>
    
                    </td>
    
                </tr>
    
            </table>
    
            <input id="btn" type="button" value="展开" onclick="a()" />
    
        </div>
    
        </form>
    
    </body>
    
    </html>
    
    

    document.getElementById("txt_Cc").style.height = yuan_Height; //这句话为什么没起作用

    • 已移动 Sheng Jiang 蒋晟 2009年5月19日 20:14 客户端脚本问题 ([Loc]From:ASP.NET 与 AJAX)
    2009年5月18日 8:57

答案

  • 因为yuan_height是function内的私有变量,第二次执行这个function会重新得到这个值。如果你要隐藏的话,把style.display设置为"none"就可以了,没必要改变height。
    Microsoft ASP.NET MVP
    • 已标记为答案 Cat Chen 2009年5月18日 9:16
    • 取消答案标记 杜宏宇 2009年5月19日 0:59
    • 已标记为答案 杜宏宇 2009年5月19日 0:59
    2009年5月18日 9:16
  • var yuan_Height = -1;
     
    function a() {
    
    if(yuan_Height == -1)
    yuan_Height = document.getElementById("txt_Cc").style.height; //获取原始高度
    
    
    
    使用
    
     document.getElementById("txt_Cc").style.height = yuan_Height + "px";

    【孟子E章】
    • 已标记为答案 杜宏宇 2009年5月19日 0:59
    2009年5月18日 9:30
    版主
  • 你每次执行a()都执行了一次计算高度,所以,这个高度始终是一个值
    【孟子E章】
    • 已标记为答案 杜宏宇 2009年5月19日 0:59
    2009年5月18日 9:32
    版主

全部回复

  • 因为yuan_height是function内的私有变量,第二次执行这个function会重新得到这个值。如果你要隐藏的话,把style.display设置为"none"就可以了,没必要改变height。
    Microsoft ASP.NET MVP
    • 已标记为答案 Cat Chen 2009年5月18日 9:16
    • 取消答案标记 杜宏宇 2009年5月19日 0:59
    • 已标记为答案 杜宏宇 2009年5月19日 0:59
    2009年5月18日 9:16
  • var yuan_Height = -1;
     
    function a() {
    
    if(yuan_Height == -1)
    yuan_Height = document.getElementById("txt_Cc").style.height; //获取原始高度
    
    
    
    使用
    
     document.getElementById("txt_Cc").style.height = yuan_Height + "px";

    【孟子E章】
    • 已标记为答案 杜宏宇 2009年5月19日 0:59
    2009年5月18日 9:30
    版主
  • 你每次执行a()都执行了一次计算高度,所以,这个高度始终是一个值
    【孟子E章】
    • 已标记为答案 杜宏宇 2009年5月19日 0:59
    2009年5月18日 9:32
    版主