如何获取由javascript更改的div内容?

时间:2009-07-23 07:50:03

标签: asp.net javascript

我在页面上有一个div,其内容将通过javascript更改,我希望从c#代码获取其值。但是,它总是返回空值或初始值,而不是更改值。

如果我从div更改为隐藏,则效果很好。我不知道为什么?

这是代码:


<head runat="server">
    <title>Untitled Page</title>
    <script type="text/javascript">
        foo = function()
        {
            var d = document.getElementById('divTest');
            d.innerHTML = 'my value';

            var e = document.getElementById('hiddenTest');
            e.value = 'my value';
        }
    </script>
</head>
<body>
    <form id="form1" runat="server" >
    <div>
        <div id="divTest" runat="server"  />
        <input type="hidden" runat="server" id="hiddenTest" />
        <input type="button" value="test" onclick="javascript:foo();" />

        <asp:Button ID="btnTest" runat="server" Text="ASP.NET Button" OnClick="OnbtnTest" />
    </div>
    </form>
</body>

这是c#代码:


   protected void OnbtnTest(object sender, EventArgs e)
    {
        Response.Write( string.Format("alert('{0}');", hiddenTest.Value) );
    }

5 个答案:

答案 0 :(得分:2)

那是因为只有表单元素被提交回服务器端。

答案 1 :(得分:2)

将表单元素中的输入元素表单发布到服务器,所有其他内容都是静态的,不会发布到服务器。这是HTTP的基本规则,您可以看到详细信息from here

您有两个选项,在准备div的内容时,在隐藏字段中写入相同的内容。在服务器端获取隐藏字段的值。

或者在准备内容时进行AJAX调用以便在服务器端获取它。

答案 2 :(得分:0)

您的javascript代码无法看到 hiddenTest divTest 控件,因为它们是从服务器端运行的。您的javascript将尝试查找控件的客户端ID。请尝试用以下函数替换函数foo():

foo = function()
{
   var d = document.getElementById('<%= this.divTest.ClientID %>');
   d.innerHTML = 'my value';

   var e = document.getElementById('<%= this.hiddenTest.ClientID %>');
   e.value = 'my value';
}

答案 3 :(得分:0)

那么实际目标是什么?您希望在用户更改输入时跟踪先前的值,还是要将用户输入的值返回到服务器端脚本?或者您只是希望用户看到他们刚刚输入的数据的警报?

如果是第一个,您只需将之前的数据移动到该函数中的数组或对象即可。因此,您需要添加一个onchange事件处理程序,该处理程序会在替换“当前值”之前将先前存储的“当前值”移动到“旧值”数组。

如果要将输入值传递给服务器,则需要使用AJAX。这也将简化您的代码。它不是让C#做UI工作,而是只是处理用户输入,决定返回值,然后将其传递回javascript,然后javascript将其输出给用户。我建议jquery使ajax更容易,例如:

    $("input#testinput).post(
                  "myserverscript.aspx", 
                   {question : "Who Loves the Sun?"}, 
                   function(answer) {
                   alert("Answer: " + answer);
                   });

但是有了你的问题,我对确切正确的答案有点模糊,因为我不知道为什么你首先使用C#位做一些javascript可以做的事以及你为什么使用asp按钮而不是普通的HTML。

答案 4 :(得分:0)

在我的情况下,我最终使用AJAX HTMLEditor而不是Div标签。与Div不同,客户端对HTMLEditor所做的任何更改都将发布到服务器