读书人

mshtml获取HTML表格中数据解决办法

发布时间: 2012-01-19 20:57:58 作者: rapoo

mshtml获取HTML表格中数据
一张表格格式如下:
<table class="TextTable">
<tr><td>a</td><td>b</td></tr>
......

</table>

能不能用mshtml通过访问其class的名字来得到表格中的所有内容?

[解决办法]
你得查一下他的接口,似乎有根据 TagName 来获取的。

小广告,技术交流群:6259765
讨论范围不限:分布式系统构架,服务器集群,客户端开发,图形图像。
[解决办法]
DOM中没有方法直接使用class得到元素,

不过可以通过JS方法扩展

JScript code
/*    Developed by Robert Nyman, http://www.robertnyman.com    Code/licensing: http://code.google.com/p/getelementsbyclassname/*/var getElementsByClassName = function (className, tag, elm){    if (document.getElementsByClassName) {        getElementsByClassName = function (className, tag, elm) {            elm = elm || document;            var elements = elm.getElementsByClassName(className),                nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,                returnElements = [],                current;            for(var i=0, il=elements.length; i<il; i+=1){                current = elements[i];                if(!nodeName || nodeName.test(current.nodeName)) {                    returnElements.push(current);                }            }            return returnElements;        };    }    else if (document.evaluate) {        getElementsByClassName = function (className, tag, elm) {            tag = tag || "*";            elm = elm || document;            var classes = className.split(" "),                classesToCheck = "",                xhtmlNamespace = "http://www.w3.org/1999/xhtml",                namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,                returnElements = [],                elements,                node;            for(var j=0, jl=classes.length; j<jl; j+=1){                classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";            }            try    {                elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);            }            catch (e) {                elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);            }            while ((node = elements.iterateNext())) {                returnElements.push(node);            }            return returnElements;        };    }    else {        getElementsByClassName = function (className, tag, elm) {            tag = tag || "*";            elm = elm || document;            var classes = className.split(" "),                classesToCheck = [],                elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),                current,                returnElements = [],                match;            for(var k=0, kl=classes.length; k<kl; k+=1){                classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));            }            for(var l=0, ll=elements.length; l<ll; l+=1){                current = elements[l];                match = false;                for(var m=0, ml=classesToCheck.length; m<ml; m+=1){                    match = classesToCheck[m].test(current.className);                    if (!match) {                        break;                    }                }                if (match) {                    returnElements.push(current);                }            }            return returnElements;        };    }    return getElementsByClassName(className, tag, elm);}; 

读书人网 >VC/MFC

热点推荐