JSFiddle - React, Tailwind, and code Playground

by kentaromiura

HTML

<div id="source">
    <ul>
        <li>foo</li>
        <li>foo</li>
        <li id="a">foo</li>
    </ul>
</div>        
<div id="target">
    <ul>
        <li>foo</li>
        <li>foo</li>
        <li>found</li>
    </ul>
</div>

JavaScript

function find(me, from, here){
    var path = []
    var current = me
    while(current.parentNode && current !== from){
        var parent = current.parentNode
        path.push([].indexOf.call(parent.childNodes, current))
        current = current.parentNode
    }
    var result = here
    while(path.length){
        result = result.childNodes[path.pop()]
    }
    return result
}

alert(find(document.getElementById('a'), document.getElementById('source'), document.getElementById('target')).innerHTML)