да, я знаю, что, наконец, я пишу метод для получения родительского элемента по индексу символов, затем получаю вычисленный стиль родительского элемента через getComputedStyle
я не знаю, есть линапрямую DOM-методы для получения родительского элемента по индексу символов.если это решение существует, я бы предпочел использовать стандартное решение.
фрагмент шоу, чтобы получить стиль цвета 7-го персонажа, который является «зеленым»
Element.prototype.getElementOfChar = function (index) {
if (this.nodeType == 3)
return this.parentNode;
var childNodes = this.childNodes;
if (!childNodes)
return this;
var insideNode = Array.prototype.find.call(childNodes, function (node) {
if (index < node.textContent.length) {
return true;
}
index -= node.textContent.length
return false;
})
insideNode = insideNode || this;
if (insideNode.nodeType == 3)
return insideNode.parentNode;
return insideNode.getElementOfChar(index)
}
document.getElementById("log").value = `getComputedStyle(document.getElementById("grandpa").getElementOfChar(6))['color'] = ${getComputedStyle(document.getElementById("grandpa").getElementOfChar(6))['color']}`
<div id="grandpa" style="color:red">
abcd
<div id="dad" style="color:green">
efgh
<div id="son" style="color:blue">
hello
</div>
</div>
</div>
<textarea id="log" style="width:300px;height:100px"></textarea>