Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript解析DOM关系字符串_Javascript_String_Dom - Fatal编程技术网

Javascript解析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

是否可以解释字符串DOM关系路径?我希望能够将关系传递给给定的节点,并在函数中对其进行处理。例如,我有这样一个函数:

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(尽管我在尝试时遇到了问题)。干杯:)