obj.removeChild(document.getElementById("newDiv"));

解决方案 »

  1.   

    innerHTML 虽说好用,但最好还是要用 createElement来做这个事情更好http://www.scriptlover.com
      

  2.   

    obj.removeChild(document.getElementById("newDiv"));
      

  3.   

    谢谢,二楼的方法是可以,但是现在是innerHTML中有好几个类似newDiv的层,怎么具体地删除某一个呢?三楼的方式好象只能用在以createElement方法创建的层时才可以removeChild,而innerHTML方式写入的层无法通过document.getElementById找到.四楼说的是对的,可我是在ajax中生成的字符串,只能以innerHTML的方式赋值给一个层,如何将这样产生的层内的层删除呢?ajax的代码如下:
    <%@ WebHandler Language="C#" Class="AddToCar" %>using System;
    using System.Web;
    using System.Data;
    using System.Data.SqlClient;public class AddToCar : IHttpHandler {    public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string p = (context.Request.QueryString["id"]).ToString();
            context.Response.Write(GetDb(p));
        }    public bool IsReusable
        {
            get
            {
                return false;
            }
        }    public string GetDb(string p)
        {
            int amount = 1;
            string tableid =Convert.ToString( p);
            SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["sqlcon"].ToString());
            SqlCommand cmd = new SqlCommand("selectProductByProductId", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("productId", SqlDbType.VarChar).Value = p;
            string str = "<div id='tableid'><table border='0' style='text-align:left; '>";
            try
            {
                cmd.Connection.Open();
                SqlDataReader sdr = cmd.ExecuteReader();
                if (sdr.HasRows)
                {
                    while (sdr.Read())
                    {
                        str += "<tr>";
                        str += "<td width='59'><div id='nav'><div id='li' name='li' onmouseover='this.className+=(this.className.length>0? \" \": \"\") + \"sfhover\";' onmouseout='this.className=this.className.replace(new RegExp(\"( ?|^)sfhover\"),\"\");'><div style='display:inline'><a href='#' style='display:inline'><img width='50' height='56' src='" + sdr["productImgUrl"].ToString() + "'/></a></div><div id='ul' style='display:inline;text-align:right'><div id='in'> <img width='59' height='60' src='" + sdr["productImgUrl"].ToString() + "' style='width:283px;height:300px;padding-top:3px;' alt=''/></div></div></div></div></td></tr>";
                        str += "<tr><td width='59'>名称:</td></tr><tr><td>" + sdr["productName"].ToString() + "</td></tr>";
                        str += "<tr><td>价格:</td></tr><tr><td>¥" + (double.Parse(sdr["listPrice"].ToString()) * double.Parse(sdr["discount"].ToString())).ToString() + "元</td></tr>";
                        str += "<tr><td>数量:" + amount.ToString() + "</td></tr>";
                    }
                    str += "</table><div id='clos' style='text-align:left;cursor:hand' onclick='delByTableId(\"" + tableid + "\")'>删除  X</div><br/></div>";
                    sdr.Close();
                }
                else
                    str = "尚无这类商品";
            }
            catch (SqlException ex)
            {
                str = ex.Message;
            }
            finally
            {
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            return str;
        }}删除层的javascript如下:
    <script language="javascript" type="text/javascript">
    function delByTableId(tableid)
    {
            //alert(tableid);
            //var objtable=document.getElementById(tableid);
            //alert(objtable);
            //objtable.parentNode.removeChild(objtable);
            //alert("okkkk");
    }
    </script>这里的javascript中的第三句alert(objtable);运行时,总是输出
    结果为null。即不能getElementById来获得innerHTML中的层,也就无法继续执行后面的removeChild,如何是好?
      

  4.   

    好象只能用在以createElement方法创建的层时才可以removeChild
    ---
    这是听哪里说来的,乖乖那个咚咚
      

  5.   

    obj=document.getElementbyId("oldDiv"); 
    obj.removeChild(document.getElementById("newDiv"));or obj=document.getElementbyId("oldDiv"); 
    obj.innerHTML = "";