自己写了个复合控件,onclientclick调用js函数时候发现状态不能保存,每次都是重新刷新。如何保存设置好的变量的状态等另一个函数调用的时候也可以使用呢?

解决方案 »

  1.   

    定义一个全局变量来保存你的状态就行了。或者存入HTML元素的属性中,也可以存进一个隐藏域中。<script language="javascript">
    var myvar="现在的值"; //定义一个全局变量function edit_click(){
    myvar="改变的值";
    }function show_click(){
    alert(myvar);//显示一下是变量的状态是否被保存
    }
    </script><input type="button" value="修改" onclick="edit_click()">
    <input type="button" value="显示" onclick="show_click()">
      

  2.   

    TO:Daniel75122
    谢谢,我试过用全局变量的方法了,不行的。  我的复合控件大致是这样的。
    <cc1:CompositeAirConditioningForm ID="demo1" runat="server" OnSleepClientClick="CmdSleep()" OnHighSpeedClientClick="WindSpeed()"   />
    每次执行完一个onclientclick函数全局变量都会重置为原来的值的。
      

  3.   

    你这是什么语言我不太懂,但我看到有个:
    runat="server"
    好像是服务器端的脚本吧,针对服务器端脚本,它的全局变量好像是只在载入网页时有用哦。你想动态改变网页,得用客户端脚本语言。如javascript
      

  4.   

    我用的确实是javascript写的,用onclientclick就可以调用客户端的js函数的,但同时我也遇到了上述问题。以前我没有做成一个复合控件的时候,就是在网页中直接用那些服务器控件,用全局变量的方式是能够解决的。但集合到在一个复合控件里面调用各个js函数就出现了上述问题。
      

  5.   


    Object.prototype.something = 'your var'; //你的值这是个比较笨的办法 但是能保存变量的值。
      

  6.   

    我试了Object.prototype.something = 'your var'; //你的值 
    var airState_updown;
    function Info()
    {
    }
    function UpdownWind()
    {
        var o = document.getElementById("");
        if ( o.value == "上下扫风" ) airState_updown = true;
        else if ( o.value == "取消上下扫风" ) airState_updown = false;
        Info.prototype.airState_updown = airState_updown;alert(Info.prototype.airState_updown);
    }
    var x = new Info();
    var y = "上下扫风" + x.airState_updown;
    alert(y);

    还是没有保存airState_updown的状态,这是为什么呢???
      

  7.   

    var o = document.getElementById(""); 
     o  ==  undefined