a.aspx:
<IMG style="Z-INDEX: 101; LEFT: 344px; POSITION: absolute; TOP: 40px" alt="" src="" id="Img2">
<IMG style="Z-INDEX: 102; LEFT: 232px; POSITION: absolute; TOP: 184px" alt="" src="" id="Img3">
<IMG style="Z-INDEX: 103; LEFT: 216px; POSITION: absolute; TOP: 56px" alt="" src="" id="Img1">
<IMG style="Z-INDEX: 104; LEFT: 344px; POSITION: absolute; TOP: 136px" alt="" src=""
id="Img4">
<INPUT style="Z-INDEX: 105; LEFT: 120px; POSITION: absolute; TOP: 488px" type="button"
value="Button" onclick="window.open('b.aspx')">b.aspx:
<asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 24px; POSITION: absolute; TOP: 48px" runat="server" Text="getElement"></asp:Button>
<script language="javascript">
<!--
for( var i=1; i<5; i++)
{
if(window.opener.document.getElementById("Img"+i) != undefined)
{
var eleLayer_id = "div" + i;
var eleLayer=document.createElement("DIV");
eleLayer.setAttribute("id",eleLayer_id);
eleLayer.setAttribute("runat","server");
eleLayer.innerText = "Img"+i;
eleLayer.style.setAttribute("position","absolute");
eleLayer.style.setAttribute("border","1 solid #000000");
document.body.appendChild(eleLayer);
}
}
-->
</script>b.aspx.cs该如何获得在b上动态添加的DIV的innerText信息?
我试着
private void Button1_Click(object sender, System.EventArgs e)
{
int i;
string layer_id = "div" + i;
for( i=0; i<=5; i++)
{
if( layer_id == undefined )
{}
else
{
Response.Write("<script>alert("+layer_id.value+")</script>");
}
}
}
结果不行,我想也是不行,希望各位高手能给点解决办法,解决后加分,谢谢

解决方案 »

  1.   

    你的div必须是runat=server才可以在cs中操作
      

  2.   

    Request.Form[ "controlName" ]
      

  3.   

    Request.Form[ "controlName" ]
    how to use?
      

  4.   

    在这个问题里,是不是改成:
    int i;
    for( i=0; i<=5; i++)
    {
    string layer_id = "div" + i;
    if( Response.Form[layer_id] == "undefined" )
    {}
    else
    {
    Response.Write("<script>alert("+Response.Form[layer_id].innerText+")</script>");
    }
    }也不行alert出来的都是null
    请高手指点
      

  5.   

    eleLayer.setAttribute("runat","server");客户端的代码设置为runat=server,它仍然是在客户端运行的。问题出在,你的客户端控件并没有运行在服务器端,程序也就取不到它们的值。
      

  6.   

    建议用Request.Form来完成,你上面调试不成功,是因为在页面中没有<form></form>标签。
      

  7.   

    请问Request.Form要如何完成这个效果?Request.Form是来实现添加还是取值呢?或者是来取客户端控件的值的呢?
      

  8.   

    a.aspx:
    <IMG style="Z-INDEX: 101; LEFT: 344px; POSITION: absolute; TOP: 40px" alt="" src="" id="Img2">
    <IMG style="Z-INDEX: 102; LEFT: 232px; POSITION: absolute; TOP: 184px" alt="" src="" id="Img3">
    <IMG style="Z-INDEX: 103; LEFT: 216px; POSITION: absolute; TOP: 56px" alt="" src="" id="Img1">
    <IMG style="Z-INDEX: 104; LEFT: 344px; POSITION: absolute; TOP: 136px" alt="" src=""
    id="Img4">
    <INPUT style="Z-INDEX: 105; LEFT: 120px; POSITION: absolute; TOP: 488px" type="button"
    value="Button" onclick="window.open('b.aspx')">b.aspx:
    <form id="Form1" style="BACKGROUND-COLOR: floralwhite" method="post" runat="server">
    <DIV id="tt" style="Z-INDEX: 101; LEFT: 0px; WIDTH: 380px; POSITION: absolute; TOP: 0px; HEIGHT: 512px; BACKGROUND-COLOR: floralwhite" ms_positioning="GridLayout"></DIV>
    <asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 24px; POSITION: absolute; TOP: 48px" runat="server" Text="getElement"></asp:Button>
    <script language="javascript">
    <!--
    for( var i=1; i<5; i++)
    {
    if(window.opener.document.getElementById("Img"+i) != undefined)
    {
    var eleLayer_id = "div" + i;
    var eleLayer=document.createElement("DIV");
    eleLayer.setAttribute("id",eleLayer_id);
    eleLayer.innerText = "Img"+i;
    eleLayer.style.setAttribute("position","absolute");
    eleLayer.style.setAttribute("border","1 solid #000000");
    document.all.tt.appendChild(eleLayer);
    }
    }
    -->
    </script>
    <form>b.aspx.cs
    private void Button1_Click(object sender, System.EventArgs e)
    {
    int i;
    for( i=0; i<=5; i++)
    {
    string layer_id = "div" + i;
    if( Request.Form[layer_id] != "" )
    {
    Response.Write("<script>alert("+Response.From[layer_id]+")</script>");
    }
    }
    }
    为什么取出来的还是空的?
      

  9.   

    请大家帮忙看看。。
    客户端在load的时候添加的控件,服务端Request.Form能取得到么?
      

  10.   

    只有表单元素(input select textarea等)才能在提交后发回服务器端,用div是永远无法把它的值发回到服务器端,你可以考虑用隐藏文本框来提交。
      

  11.   

    还是不行
    现在改为:
    b.aspx:
    <form id="Form1" style="BACKGROUND-COLOR: floralwhite" method="post" runat="server">
    <DIV id="tt" style="Z-INDEX: 101; LEFT: 0px; WIDTH: 380px; POSITION: absolute; TOP: 0px; HEIGHT: 512px; BACKGROUND-COLOR: floralwhite" ms_positioning="GridLayout"></DIV>
    <asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 24px; POSITION: absolute; TOP: 48px" runat="server" Text="getElement"></asp:Button>
    <script language="javascript">
    <!--
    for( var i=1; i<5; i++)
    {
    var eleLayer_id = "fat" + i;
    var eleLayer=document.createElement("INPUT");
    eleLayer.setAttribute("id",eleLayer_id);
    eleLayer.setAttribute("value","Text");
    eleLayer.style.setAttribute("position","absolute");
    document.all.tt.appendChild(eleLayer);
    }
    -->
    </script>
    <form>b.aspx.cs:
    private void Button1_Click(object sender, System.EventArgs e)
    {
    int i;
    for( i=0; i<=5; i++)
    {
    string layer_id = "fat" + i;
    Response.Write("<script>alert('"+Request.From[layer_id]+"')</script>");
    }
    }
    还是为空请教各位高手
      

  12.   

    <DIV id="tt" style="Z-INDEX: 101; LEFT: 0px; WIDTH: 380px; POSITION: absolute; TOP: 0px; HEIGHT: 512px; BACKGROUND-COLOR: floralwhite" ms_positioning="GridLayout" Runat=Server>sssss</DIV>
    ~~~~~~~~~~~
    Response.Write("<script>alert('"+tt.innerText+"')</script>");你式式
      

  13.   

    你动态创建的文本框没有指定name属性,Request.Form["userName"]这样获取的是name属性值为userName的文本框的值,而不是id为userName的文本框,id属性是用来在客户端定位