Linux中国  设为主页
 收藏本站
 
当前位置: > 首页 ->编程语言 ->XML ->XML 问题: 超越DOM(轻松使用 DOM 的技巧和诀窍)
  相关分类: 
ASP
ViualBasic
UML / Rational Rose
PHP4/PHP5
Perl
JAVA/JSP教程
Delphi
ColdFusion
CGI
C/C++
ASP.NET
XML
  站内搜索: 
热门文章排行
热门文章排行 XSL语法介绍(04-28)
XML在电子商务中的应用(04-28)
XML Schema用法(04-28)
跟我学XSL(四)(04-28)
跟我学XSL(三)(04-28)
精采文章排行
精采文章排行 使用 XML 文件记录操作日志(06-04)
XML 问题: 超越DOM(轻松使用 DOM 的(06-04)
利用XSLT把ADO记录集转换成XML(06-04)
從無到有實現一個xml數據庫登錄驗証(06-04)
XML 增、删、改和查示例(06-04)
  ·XML 问题: 超越DOM(轻松使用 DOM 的技巧·利用XSLT把ADO记录集转换成XML·從無到有實現一個xml數據庫登錄驗証·XML 增、删、改和查示例·读写xml所有节点个人小结和读取xml节点的·XML技巧五则·灵活调用xsl来解析xml文档(js异步)·xml文件调用css·对于任意的XML的遍历

XML 问题: 超越DOM(轻松使用 DOM 的技巧和诀窍)

作者:Webmaster   来源:Linuxdby.com   点击:   日期:2007-06-04 [收藏] [投稿]

  IE是否经常中毒?推荐您


    }
    var i;
    var returnValue = [];
    for (i = 0; i < node.childNodes.length; i++) {
        returnValue.push(innerText(node.childNodes[i]));
    }
    return returnValue.join('');
}
 

    快捷方式

    人们常常抱怨 DOM 太过冗长,并且简单的功能也需要编写大量代码。例如,如果您想创建一个包含文本并响应点击按钮的 <div> 元素,代码可能类似于:

清单 5. 创建 <div> 的“漫长之路”
function handle_button() {
    var parent = document.getElementById('myContainer');
    var div = document.createElement('div');
    div.className = 'myDivCSSClass';
    div.id = 'myDivId';
    div.style.position = 'absolute';
    div.style.left = '300px';
    div.style.top = '200px';
    var text = "This is the first text of the rest of this code";
    var textNode = document.createTextNode(text);
    div.appendChild(textNode);
    parent.appendChild(div);
}
 


    若频繁按照这种方式创建节点,键入所有这些代码会使您很快疲惫不堪。必须有更好的解决方案 —— 确实有这样的解决方案!下面这个实用工具可以帮助您创建元素、设置元素属性和风格,并添加文本子节点。除了 name 参数,其他参数都是可选的。

清单 6. 函数 elem() 快捷方式
function elem(name, attrs, style, text) {
    var e = document.createElement(name);
    if (attrs) {
        for (key in attrs) {
            if (key == 'class') {
                e.className = attrs[key];
            } else if (key == 'id') {
                e.id = attrs[key];
            } else {
                e.setAttribute(key, attrs[key]);
            }
        }
    }
    if (style) {
        for (key in style) {
            e.style[key] = style[key];
        }
    }
    if (text) {
        e.appendChild(document.createTextNode(text));
    }
    return e;
}
 
    使用该快捷方式,您能够以更加简洁的方法创建 清单 5 中的 <div> 元素。注意,attrs 和 style 参数是使用 JavaScript 文本对象而给出的。

清单 7. 创建 <div> 的简便方法
function handle_button() {
    var parent = document.getElementById('myContainer');
    parent.appendChild(elem('div',
      {class: 'myDivCSSClass', id: 'myDivId'}
      {position: 'absolute', left: '300px', top: '200px'},
      'This is the first text of the rest of this code'));
}

    在您想要快速创建大量复杂的 DHTML 对象时,这种实用工具可以节省您大量的时间。模式在这里就是指,如果您有一种需要频繁创建的特定的 DOM 结构,则使用实用工具来创建它们。这不但减少了您编写的代码量,而且也减少了重复的剪切、粘贴代码(错误的罪魁祸首),并且在阅读代码时思路更加清晰。
   
    接下来是什么?
    DOM 通常很难告诉您,按照文档的顺序,下一个节点是什么。下面有一些实用工具,可以帮助您在节点间前后移动:

清单 8. nextNode 和 prevNode
// return next node in document order
function nextNode(node) {
    if (!node) return null;
    if (node.firstChild){
        return node.firstChild;
    } else {
        return nextWide(node);
    }
}
// helper function for nextNode()
function nextWide(node) {
    if (!node) return null;
    if (node.nextSibling) {
        return node.nextSibling;
    } else {
        return nextWide(node.parentNode);
    }
}
// return previous node in document order
function prevNode(node) {
    if (!node) return null;
    if (node.previousSibling) {
      return previousDeep(node.previousSibling);

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<

上一页 1 23 4 下一页

上一篇:利用XSLT把ADO记录集转换成XML   下一篇:使用 XML 文件记录操作日志
文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论

   相关文章:
·使用 XML 文件记录操作日志

   文章评论:(1条)
  
 请留名: 匿名评论   点击查看所有评论 论坛讨论
 

 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。