Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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 HTML元素到DOM选择器_Javascript - Fatal编程技术网

JavaScript HTML元素到DOM选择器

JavaScript HTML元素到DOM选择器,javascript,Javascript,我有一个函数,它需要一个HTML元素来对其执行操作。我请求DOM选择器作为参数 功能(document.body) 其中元素是DOM查询,但在函数的其他地方,我需要查询作为字符串。是否可以将对象转换为其原始字符串类型?如果是这样,怎么做?你可以反过来做。向函数传递选择器字符串: functionName('body') 然后使用以下命令检索相关的DOM元素: 要获取元素的HTML字符串,请使用“innerHTML” 临时家长: var div = document.createElement(

我有一个函数,它需要一个HTML元素来对其执行操作。我请求DOM选择器作为参数

功能(document.body)


其中元素是DOM查询,但在函数的其他地方,我需要查询作为字符串。是否可以将对象转换为其原始字符串类型?如果是这样,怎么做?

你可以反过来做。向函数传递选择器字符串:

functionName('body')
然后使用以下命令检索相关的DOM元素:


要获取元素的HTML字符串,请使用“innerHTML”

临时家长:

var div = document.createElement("div");
将所需元素附加到父元素:

div.appendChild(document.body);
测试结果:

alert(div.innerHTML);
如果试图获取“querySelector()”的结果元素的字符串:


临时父级确保返回元素的标记。否则,您将只获取其子元素的字符串。如果要使用“querySelectorAll()”,只需在返回的节点数组上循环即可。

在我看来,您使用的方法不会始终如一地产生正确的结果

传入元素意味着必须事先找到该元素,并且实际上会由于缺少信息而阻止找到其他类似位置的元素

传入选择器是一个选项,如果需要查找一组类似的元素,但有时选择器太复杂,无法放在一个字符串中,例如,如果它需要筛选或其他度量,则可以继续使用该选项

在处理复杂的元素选择器或位置时,最好接受一个回调函数,该函数返回所需的元素或元素集。如果是基本元素,它每次都可以简单地返回相同的元素;如果是更复杂的元素,回调可以访问DOM,根据某些度量进行过滤,然后返回有时是理想的子集


回调函数将提供全面的支持,而无需始终转换为查询字符串,这对于复杂的结构来说并不总是可能的。

如果我理解您的意思,您可以对此进行更正

function (elem) {
  if (typeof elem === 'string' || elem instanceof String) {
    elem = document.querySelector(elem);    
  }

  var target = elem.querySelector(...);
}

你有一个预期结果的例子吗?你所说的“原始字符串类型”是什么意思
body
是一个DOM元素,没有字符串类型(原始或其他)。你打算用这个字符串做什么?问题是,一个DOM元素可能有几个可能的查询字符串,这些字符串将唯一地返回它。这不是要求的。在我看来,他希望传入一个对象,对其进行操作,然后能够对生成的HTML字符串进行处理。如果你知道对方要求什么,为什么不回答?
div.appendChild(document.body.querySelector('yourClass'));
function (elem) {
  if (typeof elem === 'string' || elem instanceof String) {
    elem = document.querySelector(elem);    
  }

  var target = elem.querySelector(...);
}