Javascript 从给定的innerHTML字符获取元素

Javascript 从给定的innerHTML字符获取元素,javascript,Javascript,我有以下HTML代码: <div id="root"><span id="first">a</span><span id="second">b</span></div> 有可能吗?给出您的HTML,下面是代码 document.getElementById('root').children[0].firstChild 将为您提供一个文本节点,因此 document.getElementById('root').child

我有以下HTML代码:

<div id="root"><span id="first">a</span><span id="second">b</span></div>

有可能吗?

给出您的HTML,下面是代码

document.getElementById('root').children[0].firstChild
将为您提供一个文本节点,因此

document.getElementById('root').children[0].firstChild.parentElement
将给你的父母跨度,但这似乎有点多余,除非我遗漏了什么

如果更可能的情况是,您在该DIV中有多个具有不同内容的跨距,并且您希望根据内容定位特定跨距,那么您可以使用以下方式:

var aSpans = document.querySelectorAll('#root span');

for (var i=0, ln = aSpans.length; i < ln; i++) {
    if (aSpans[i].innerHTML == 'a') {
        console.log(aSpans[i]);
        break
    }
}
使用:


你如何确切地了解角色的角色?如果有文本节点,只需执行node.parentNode。或者,您可以遍历所有文本节点,找到一个包含。请提供有关上下文的更多信息。您是否真的从其在祖父母元素的innerHTML中的位置获取a?如果你是的话,这听起来像是你所能找到的最脆弱的方法,而且从长远来看,在任何有更新功能的项目中都是行不通的。一旦你找到了元素,你想用它做什么?如果是样式,我建议使用CSS使用div:first-child::first-letter{font-weight:bold;}或其他什么。
var aSpans = document.querySelectorAll('#root span');

for (var i=0, ln = aSpans.length; i < ln; i++) {
    if (aSpans[i].innerHTML == 'a') {
        console.log(aSpans[i]);
        break
    }
}
var spanContent = "a",
    spanElement = $("#root > span:contains('" + spanContent + "')");

spanElement.css("color", "red");