使用treewalker修改表

Modify table using treewalker

本文关键字:修改 treewalker 使用      更新时间:2023-09-26

我正试图使用树浏览器在页面上定位一个表,插入一列,然后根据每行第一个单元格中的值填充该列中的单元格。我做了很多研究,但总是失败。任何能把我推向正确方向的一击都将不胜感激。

document.ondblclick = addElement;
var i = 1;
function addElement () { 
    var allTextNodes = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT),
    // some temp references for performance
    tmptxt,
    tmpnode,
    // compile the RE and cache the replace string, for performance
    cakeRE = "Investment"
    replaceValue = "TestReplace";
    var allElementNodes = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);
    // iterate through all text nodes
while (allTextNodes.nextNode()) {
    tmpnode = allTextNodes.currentNode;
    tmptxt = tmpnode.nodeValue;
    tmpnode.nodeValue = tmptxt.replace(cakeRE, replaceValue);
}
    // iterate through all Element nodes
while (allElementNodes.nextNode()) {
    tmpnode = allElementNodes.currentNode;
    //I know this is not even close to real code but I think it explains what i'm trying to do
    IF (tmpnode.tagvalue = "table")
    { 
    tmpnode.insertcolumn
    }
    If (tempnode.tagvalue = "tr" && Row.contains("Active"))
    {
    pupulate the cell from the previously created column with "Active Pending";
    }
    
}
}

function PopulateTable() {
    var table = document.getElementsByTagName("table")[0];
    var rows = table.getElementsByTagName("tr")[0];
    for(var i = 0; i< rows.length; i++ ) {
        var firstColumn = rows[0].getElementsByTagName("td")[0];
        //do your data aggregation here
        var newCell = document.createElement("td");
        newCell.innerHTML = "some data";//create row here
        rows[i].appendChild(newCell);
    }
}

我认为你可能用了错误的方式。我建议在这种特殊情况下不要使用助行器。相反,你可以做一些更简单的事情,比如:

function PopulateTable() {
    var table = document.getElementsByTagName("table")[0];
    var rows = table.getElementsByTagName("tr")[0];
    for(var i = 0; i< rows.length; i++ ) {
        var firstColumn = rows[0].getElementsByTagName("td")[0];
        //do your data aggregation here
    }
    var newRow = document.createElement("tr");
    newRow.innerHTML = //create row here
    table.appendChild(newRow);
}