1

我正在尝试根据其文本在特定表格的单元格中添加一个锚点。这是我到目前为止所得到的......

for (var d = 0, max = allTableCells.length; d < max; d++) {
    var node = allTableCells[d];
    var currentText = node.childNodes[0].nodeValue;

    if (currentText === "@WebSecurity.CurrentUserName + 'TEXT'")
        node.childNodes[0].nodeValue = '<a name="CP"></a>'
    }
}

这里的主要问题似乎是这两行......

if (currentText === "@WebSecurity.CurrentUserName + 'TEXT'")
    node.childNodes[0].nodeValue = '<a name="CP"></a>'

如果有人可以帮助我,那就太好了...谢谢

这是页面的完整脚本: var allTableCells = document.getElementsByTagName("td");

for (var i = 0, max = allTableCells.length; i < max; i++) {
    var node = allTableCells[i];


    var currentText = node.childNodes[0].nodeValue;


    if (currentText === "@WebSecurity.CurrentUserName")
        node.style.color = "Blue"; 
        node.style.border = "solid"


      }
     for (var c = 0, max = allTableCells.length; c < max; c++) {
    var node = allTableCells[c];
    var currentText = node.childNodes[0].nodeValue;


    if (currentText === "None")
        node.style.color = "black";
    node.style.border = "solid"
}

var d, max, node, nodes, currentText, anchor;
for (d = 0, max = allTableCells.length; d < max; d++) {
node = allTableCells[d];
nodes = node.childNodes;
currentText = nodes[nodes.length - 1].nodeValue;    
if (@WebSecurity.CurrentUserName === nodes[0].nodeValue && currentText === 'CP') {
    anchor = document.createElement('a');
    anchor.name = 'CP';
    allTableCells[d].insertBefore(anchor, nodes[0]);
}

}

</script>
4

1 回答 1

0

像这样的单元格<td>Bob<br>text random<br>CP</td>包含childNodes以下内容:

nodes = td.childNodes;
nodes[0] === Bob
nodes[1] === br element
nodes[2] === text random
nodes[3] === br element
nodes[4] === CP

请注意,如果</td>与 不在同一行CP,也会有nodes[5] === empty text node

如果您要检查的文本(CP在评论中说明)始终位于最后一个节点中,则需要像这样更改代码:

var d, max, node, nodes, currentText, currentUser, anchor;
for (d = 0, max = allTableCells.length; d < max; d++) {
    node = allTableCells[d];
    nodes = node.childNodes;
    currentUser = parent.@WebSecurity.CurrentUserName;
    currentText = nodes[nodes.length - 1].nodeValue;    
    if (currentUser === nodes[0].nodeValue && currentText === 'CP') {
        anchor = document.createElement('a');
        anchor.name = 'CP';
        allTableCells[d].insertBefore(anchor, nodes[0]);
    }
}

jsFiddle 上的简化演示


编辑

在评论中,您告诉过此代码是在 iframe 中执行的。我假设@WebSecurity.CurrentUserName是在主窗口中定义的。确保它是主窗口中的全局变量,然后您可以使用上面编辑的代码段。

于 2013-08-16T19:09:57.963 回答