Javascript解析DOM关系字符串
是否可以解释字符串DOM关系路径?我希望能够将关系传递给给定的节点,并在函数中对其进行处理。例如,我有这样一个函数:Javascript解析DOM关系字符串,javascript,string,dom,Javascript,String,Dom,是否可以解释字符串DOM关系路径?我希望能够将关系传递给给定的节点,并在函数中对其进行处理。例如,我有这样一个函数: function doSomeStuff ( node, domPath ) { var targetNode = node.domPath; } <p> This is a <strong>test</strong>. With a <span>span</span>. </p> <ul
function doSomeStuff ( node, domPath ) {
var targetNode = node.domPath;
}
<p>
This is a <strong>test</strong>. With a <span>span</span>.
</p>
<ul>
<li>one</li>
<li>two</li>
</ul>
电话号码是
doSomeStuff( myElement, "parentNode.previousSibling" )
targetNode是“未定义”的,这并不奇怪——在这个实例中可以解析字符串吗?您可以使用
eval
,但我不推荐它,因为它会打开安全漏洞和滥用的大门
想象一下这样一个文档:
function doSomeStuff ( node, domPath ) {
var targetNode = node.domPath;
}
<p>
This is a <strong>test</strong>. With a <span>span</span>.
</p>
<ul>
<li>one</li>
<li>two</li>
</ul>
在上面的文档中,两个console.log调用显示true
:
var span = document.querySelector("span");
var ul = document.querySelector("ul");
console.log(resolvePath(span, "parentNode.nextElementSibling") === ul);
console.log(resolvePath(ul, "previousElementSibling.lastElementChild") === span);
这是一个概念证明。我没有注意到道路上的无关空间。此外,如果路径中的任何一步(最后一步除外)解析为未定义的值,则会爆炸。我认为这是可取的,因为它可以防止路径中的拼写错误,但在某些情况下,轰炸可能不是理想的行为。根据需要进行调整。谢谢路易斯-我应该提到我想避免使用Eval(尽管我在尝试时遇到了问题)。干杯:)