javascript - 如何通过属性获取元素中的元素并用纯js更新它的节点?

标签 javascript html

我有一个像这样的html标签:

<div data-ctrl="master">
    <div data-text="txtName"></div>
</div>
<div data-ctrl="master">
    <div ><span data-text="txtName"></span> Wiratama</div>
</div>

在 js 代码中我有:

var txtName = 'Yoza';

我想使用纯js将html插入到文档中具有属性data-text="txtName"的元素中,并在具有data-ctrl="master"的元素中插入html。

function updateData(txtName){
var html = '<b>' + txtName + '</b>';
//update data for every element with attribute data-text txtName here
var allElements = document.getElementsByTagName('*');
        for (var i = 0, n = allElements.length; i < n; i++) {
            if (allElements[i].getAttribute("data-text") !== null) {
                if (allElements[i].getAttribute("data-text") === 'txtName') {
                    console.log(nodeTemplate);
                    //                    allElements[i].innerHTML = html;
                }

            }
        }
}

这是我尝试过的 js 代码。

最佳答案

使用querySelectorAll返回与您的选择匹配的节点列表。然后迭代它们中的每一个,并根据需要设置 innerHTML:

function updateData(txtName){
    var nodes = document.querySelectorAll('[data-ctrl="master"] [data-text="txtName"]');
    for (i = 0; i < nodes.length; ++i) {
        nodes[i].innerHTML = "<b>" + txtName + "</b>";
    }
};

updateData("Yoza");
<div data-ctrl="master">
    <div data-text="txtName"></div>
</div>
<div data-ctrl="master">
    <div ><span data-text="txtName"></span> Wiratama</div>
</div>

关于javascript - 如何通过属性获取元素中的元素并用纯js更新它的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33477378/

相关文章:

javascript - 在 Canvas 上绘画并自动删除它 (HTML5)

同一页面上的 Javascript 响应

javascript - XPath 还是 querySelector?

javascript - 尝试使用 Jquery 制作动画时 Div 更改到错误位置

javascript - 如何使用 Jquery 将光标聚焦在两个括号(圆括号)之间?

javascript - Appendchild() 有两个输入,并删除最新的帖子

javascript - 默认选中单选按钮 - JQuery 事件不起作用

javascript - 使rank输入增加和减少一个数并停止

javascript - node.js 错误 : req. flash() 需要 session

javascript - 快速查找矩阵第 N 列中最大/最小元素索引的方法