首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • DOM高手请进~ [已结贴,结贴人:ThinkInDelphi]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ThinkInDelphi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-04-24 17:20:09 楼主
    最近一个项目需要在树状结构中进行编辑,我想在一个树状结点下新增一个结点,我写了以下函数:
    function b()
    {
    var table=document.createElement("table");
    var tr=document.createElement("tr");
    var td=document.createElement("td");
    var txt=document.createTextNode("aa");
    var atr=document.createAttribute("border");
    var atr2=document.createAttribute("style");
    td.appendChild(txt);
    tr.appendChild(td);
    atr.nodeValue="10";
    atr2.nodeValue="display:block";
    table.setAttribute(atr);
    table.setAttribute(atr2);
    table.appendChild(tr);

    document.appendChild(table);//显示该table
    }
    为什么页面不会显示这个刚添加的table啊??
    页面没有报任何错,而且document.ChildNodes.length显示该table已添加成功le了~
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ice_berg16
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 6

      5

    发表于:2008-04-24 17:25:311楼 得分:5
    document.body.appendChild(table);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • TaoTaoYou
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-04-25 08:37:592楼 得分:0

    在添加元素之前,你首先要确定要把你创建的新元素添加到那个元素里,

    appendChild(newChild)  将newChild添加到运行该函数的节点之中(末端)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • strife
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-04-25 09:31:093楼 得分:5
    ie还需要加个tbody,

    var tbody  = document.createElement("tbody");
    td.appendChild(txt);
    tr.appendChild(td);
    atr.nodeValue="10";
    atr2.nodeValue="display:block";
    table.setAttribute(atr);
    table.setAttribute(atr2);
    tbody.appendChild(tr);
    table.appendChild(tbody);


    document.body.appendChild(table);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ThinkInDelphi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-04-25 10:23:594楼 得分:0
    高手真多啊 谢谢~  不过下面代码:
    var tbody  = document.createElement("tbody");
    td.appendChild(txt); 
    tr.appendChild(td); 
    atr.nodeValue="10"; 
    atr2.nodeValue="display:block"; 
    table.setAttribute(atr); 
    table.setAttribute(atr2); 
    tbody.appendChild(tr);
    table.appendChild(tbody); 

    document.body.appendChild(table);

    执行后,为啥 tbale显示无边框啊?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ThinkInDelphi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-04-25 10:25:525楼 得分:0
    完整代码如下:
    function b()
    {

    var table=document.createElement("table");
    var tr=document.createElement("tr");
    var td=document.createElement("td");
    var txt=document.createTextNode("aa");
    var atr=document.createAttribute("border");
    var atr2=document.createAttribute("style");
    var tbody  = document.createElement("tbody");

    td.appendChild(txt);
    tr.appendChild(td);
    atr.nodeValue="1";
    atr2.nodeValue="display:block";
    table.setAttribute(atr);
    table.setAttribute(atr2);
    tbody.appendChild(tr);
    table.appendChild(tbody);

    document.body.appendChild(table);
    }
    请求DOM高手赐教啊~!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • strife
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-04-25 12:52:436楼 得分:2
    setAttribute对ie貌似无效,用style.的形式试试
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jackyzsy2008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-04-25 13:48:307楼 得分:3
    用这个方法吧
    Element.setAttribute(name,value)

    用在你的例子中就是:table.setAttribute("border","1px");
    table.setAttribute("style","color:red");.....等等等等

    good luck
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pippe
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-04-25 14:18:278楼 得分:5
    setAttribute对IE大部分有效
    但是如果属性是事件和样式等在IE里无法用setAttribute
    也就是
    样式:
    obj.setAttribute("style", "color:red")
    在FF里有效,在IE里无效
    解决方法:obj.style.color = "red";
    或者obj.style.cssText = "color:red";

    事件如:
    obj.setAttribute("onclick", "a()");
    在FF里有效,在IE里无效
    解决方法:
    //此写法要注意内存泄露
    obj.onclick = function() {alert(1)}

    所以通常为了兼容的话一般都不用setAttribute
    直接对属性赋值。如obj.a = "aa"
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • llddy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-04-25 16:01:009楼 得分:0
    挺厉害的。。帮顶一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chenhongxin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-05-07 14:45:2710楼 得分:0
    obj.setAttribute("onclick", "a()");
    在FF里有效,在IE里无效
    解决方法:
    //此写法要注意内存泄露
    obj.onclick = function() {alert(1)}
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved