热门文章 | 热门软件| 热门源码 | 热门电影 | 知识库 | 联系我们

软件 源码 教程 影视 健康 招聘
  HTML | JavaScript | ASP | PHP | JSP | NET | VB | VC | VF | Windows | Linux | Mysql | Mssql | Oracle | Struts 
当前位置: 创世纪计算机资源网 -> 文章频道 ->js 
站内搜索:
使用JS操作页面表格,元素的一些技巧
作者:佚名 来源:不详 整理日期:2007-04-08

(一)

ie 、firefox以及其它浏览器对于 table 标签的操作都各不相同,在ie中不允许对table和tr的innerHTML赋值,使用js增加一个tr时,使用appendChile方法也不管用。下面是就三种浏览器测试的结果:

insertRow

  • IE6 :支持,而且默认参数为-1,默认添加到最后
  • FireFox :支持,但部支持默认参数
  • Opera :支持,支持默认参数,默认添加到最前

AppendChild
  • IE6 :不支持
  • FireFox :支持,但增加TR后不影响ROWS
  • Opera :支持,效果同insertRow(-1),影响ROWS


最大限度的遵循规范,就能写出安全的、适用性强的代码了:

//向table追加一个空行:
var otr = otable.insertRow(-1);
var otd = document.createElement("td");
otd.innerHTML = " ";
otd.className = "XXXX";
otr.appendChild(otd);

这样就可以运行在这三种浏览器上了

(三)childNodes的操作

(1)属性nodeName

Utils.getChildrenByTagName = function (node, tagName) {
    var ln = node.childNodes.length;
    var arr = [];
    for (var z = 0; z < ln; z++) {
        if (node.childNodes[z].nodeName == tagName) {
            arr.push(node.childNodes[z]);
        }
    }
    return arr;
};

(2)属性id

function getNodeID(parent, id) {
    var ln = parent.childNodes.length;
    for (var z = 0; z < ln; z++) {
        if (parent.childNodes[z].id == id) {
            return parent.childNodes[z];
        }
    }
    return null;
}
(3)属性className

对应class,如 <tr class="class1">

 function getElementsByClassName(node, className) {
    var children = node.getElementsByTagName("*");
    var elements = new Array();
    for (var i = 0; i < children.length; i++) {
        var child = children[i];
        var classNames = child.className.split(" ");
        for (var j = 0; j < classNames.length; j++) {
            if (classNames[j] == className) {
                elements.push(child);
                break;
            }
        }
    }
    return elements;
}

相关文章