使用ID对动态创建的div执行操作



当我知道用以下代码动态创建的div的ID时,我如何执行操作(例如更改文本):

Stringbuilder sb = new Strinbuilder();
sb.AppendLine("<div id='example'>I want to change this text</div>");
//Examples using a literal, placeholder or a lable:
litExample.Text = sb.ToString();
phExample.Text = sb.ToString();
lblExample.Text = sb.ToString();

//Call id example and change "I want to change this text" , to something else.
//How do I do this?

提前谢谢。

首先,请确保添加了以下命名空间:

using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Text;

并将以下方法添加到您的代码中:

  public string RenderControl(Control ctrl)
    {
        StringBuilder sb = new StringBuilder();
        StringWriter tw = new StringWriter(sb);
        HtmlTextWriter hw = new HtmlTextWriter(tw);
        ctrl.RenderControl(hw);
        return sb.ToString();
    }

并将您的代码更改为以下内容:

        //StringBuilder sb = new StringBuilder();
        HtmlGenericControl myDiv = new HtmlGenericControl("div");
        myDiv.InnerText = "I want to change this text";
        //Make sure asp.net does not add any prefix to your Id "example"
        myDiv.ClientIDMode = System.Web.UI.ClientIDMode.Static;
        myDiv.ID = "example";
        //Examples using a literal, placeholder or a lable:
        litExample.Text = RenderControl(myDiv);
        phExample.Text = RenderControl(myDiv);
        lblExample.Text = RenderControl(myDiv);
        //Do Stuff with myDiv as typical control

当页面已经呈现时,您可能需要使用javascript来完成此操作。类似于:

document.getElementById('example').innerHTML = 'New text';

如果页面尚未呈现,您可能需要直接在字符串生成器内调整字符串,或者在使用它的每个实例处调整字符串,也可能完全使用不同的方法,但您的问题中没有提供足够的信息来说明任何有用的信息。

只是一件小事,由于所有的div共享相同的ID,您将在JS上度过一段糟糕的时光…

您可以通过手动设置ID并在Static上设置ClientIDMode来解决此问题,以防止Seyed所指出的自动创建。

您可以使用自定义的CSS类来一次选择所有项目。

最新更新