有两个文件
1个是mid.js
1个是a.aspx在a.aspx里有个button控件,<asp:Button ID="button1"  runat="server" Text="取消" 
                                    onclick="button1_Click" />
我现在想在mid.js中的一个function里执行a.aspx的button1_click,请问要怎么写?
function ChangeText() {
    var btn = document.getElementById(getClientId().Id1);//这里该怎么写才能在mid.js里获取到a.aspx
    document.getElementById('btn').click();
    //btn.value = "from extended js";
}

解决方案 »

  1.   

    mid.js是嵌入在a.aspx里面的吗?如果是的,这样写mid.js里面写
    document.getElementById(btn).click(); //注意没引号
    a.aspx里面要加上
    <script>
    var btn = "<%=button1.ClientID%>"
    </script><script src="mid.js"></script>
      

  2.   


    我试过了,在mid.js里提示 btn未定义mid.js和a.aspx是两个独立的文件,只是在a.aspx里引入了mid.js.
    a.aspx里的写法是这样的:
    <script type="text/javascript">
        var btn = "<%=button1.ClientID%>"
    </script><script type ="text/javascript" src="../js/mid.js"></script>
      

  3.   


    你查看一下源文件,页面上存在ID=btn 的对象么?
      

  4.   

    只是在a.aspx里引入了mid.js.
    就是这么做的。确保你的a.aspx里面有<asp:Button ID="button1" runat="server" Text="取消" 
      onclick="button1_Click" />
      

  5.   

    mid.js是这么写的
    function remove()        {
            document.getElementById(btn).click();
    }a.aspx是这么写的
    <html>
    <head>
    <title>未定义文档</title>
    <script type="text/javascript">
        var btn = "<%=button1.ClientID%>"
    </script>
    <script type="text/javascript" src="../js/mid.js"></script>
    </head>
    <body>
    <asp:Button ID="button1"   runat="server" Text="取消" 
                                        onclick="button1_Click" Width="60px" />
    </body>
    </html>a.aspx.cs是这样写的:
        protected void btncancel_Click(object sender, EventArgs e)
        {
            string reason = "已取消修改";
            Response.Redirect("error.aspx?reason=" + reason);
        }
      

  6.   

    只是在a.aspx里引入了mid.js.
    就是这么做的。确保你的a.aspx里面有<asp:Button ID="button1" runat="server" Text="取消" 
      onclick="button1_Click" />并且,这个控件没有嵌套在其他控件里面,尤其是GriwView,Repater,Datalist这些多行控件
      

  7.   

    1:确保你的ID值是对的并且是唯一的
    2:确保你的js文件已经下载完毕
    3:确保你的浏览器没有禁用js
      

  8.   

    我无语了
    怎么都不行mid.js是这么写的
     function remove() {
     alert('是否运行到这里了'); 这里弹出对话框了,说明运行到这里了
     alert(btn);//这里就提示btn未定义
     document.getElementById(btn).click();
    }a.aspx是这么写的
    <html>
    <head>
    <title>未定义文档</title>
    <script type="text/javascript">
       var btn = "<%=button1.ClientID%>";
       alert(btn);  //这里弹出来的信息为button1,这个clientid对吗?
    </script>
    <script type="text/javascript" src="../js/mid.js"></script>
    </head>
    <body>
    <asp:Button ID="button1" runat="server" Text="取消"  
      onclick="button1_Click" Width="60px" />
    </body>
    </html>a.aspx.cs是这样写的:
       protected void button1_Click(object sender, EventArgs e)
       {
       string reason = "已取消修改";
       Response.Redirect("error.aspx?reason=" + reason);
       }按说这样就应该可以了啊,为什么还不行呢?
    a.aspx已经运行了
       var btn = "<%=button1.ClientID%>";
       alert(btn);  //这里弹出来的信息为button1,这个clientid对吗?mid的function也运行了
     alert('是否运行到这里了'); 这里弹出对话框了,说明运行到这里了
     alert(btn);//这里就提示btn未定义
    为什么就是没有得到btn的值,也就是没有从a.aspx传递到mid.js,有什么别的方法传递吗
      

  9.   

    估计是代码执行的先后导致的,
    var btn = "<%=button1.ClientID%>";
      alert(btn); 
    这儿弹出button1说明btn已经定义,之后的该不会提示btn未定义的,确认这儿代码先于后面的那段运行么?至于你说的  "没有从a.aspx传递到mid.js",这个问题不存在,页面加载了js文件那么文件里面的代码就和写在页面上一样的效果别的方法的话,不重复的话直接用id获取应该是可以的
    function ChangeText() {
      var btn = document.getElementById('button1');
      alert(btn);
      btn.onclick();}
      

  10.   

    你可以把控件的值绑一份到一个hidden隐藏域里。给隐藏域定义ID,然后外部JS就可以访问这个隐藏域的值。。也就是控件的值。
      

  11.   

    我觉得是不是a.aspx下的var btn = "<%=button1.ClientID%>";出问题了啊
     
    <script type="text/javascript">
        var btn = document.getElementById('<%=button1.ClientID%>');
        var btn2 = "<%=button1.ClientID%>";
        alert(btn);
        alert(btn2);
    </script>
    我改成这样var btn = document.getElementById('<%=button1.ClientID%>'); btn是null
            var btn2 = "<%=button1.ClientID%>"; btn2是button1
      

  12.   

    或者换个思路吧,还有别的方法可以从aspx文件里传值给js文件吗?
      

  13.   

    本帖最后由 net_lover 于 2012-03-19 15:26:29 编辑
      

  14.   

    var btn2 = "<%=button1.ClientID%>"; btn2是button1中不就是传递过去吗???你js文件里面使用document.getElementById(btn2 )得到,注意没引号
      

  15.   

    本帖最后由 net_lover 于 2012-03-19 15:43:33 编辑
      

  16.   

    我错了
    a.aspx实际上是main.html的子框架
    main.html里用<img src="pic/top_5.jpg" alt="关闭窗口" onClick="remove()">来调用mid.js中的document.getElementById(btn).click();
    调用remove()的页面和btn属性所在的a.aspx不是一个页面,所以才取不到btn的值吗?不过我在点main.html中的关闭窗口实际上也得到了button1的clientid啊
    <script type="text/javascript">
       var btn = "<%=button1.ClientID%>"
       alert(btn); //这样会得到button1
    </script>
    框架结构对传值有影响吗?
      

  17.   

    本帖最后由 net_lover 于 2012-03-19 16:49:15 编辑
      

  18.   

    main.html
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    </head>
    <body>
    <input onclick="window.frames['xxxx'].remove()" value="test" type="button" /><br />
    <iframe name="xxxx" src="a.aspx"></iframe>
    </body>
    </html>
      

  19.   


    弱弱的问一句onclick="window.frames['xxxx'].remove()" 这个xxxx指的是a.aspx的form的id吗?
      

  20.   

    <iframe name="xxxx" src="a.aspx"></iframe>iframe的name不是id
      

  21.   

     <script type="text/javascript" src="mid.js"></script>放在HTML页面的下面(button按钮的后面)