【问题标题】:Is it possible to convert a DOM element to a string and back?是否可以将 DOM 元素转换为字符串并返回?
【发布时间】:2014-02-27 18:57:33
【问题描述】:

我正在获取任何 DOM 元素(例如 document.body),我想将其转换为这样的字符串:

function convert(el){
//should return a String
}

alert(convert(document.body));
//should alert (String) "document.body"
alert(document.getElementById('foo'));
//should alert (String) "document.getElementById('foo')"

我还想将这些字符串转换回来(如果可能,不使用 eval())。例如:

function convertBack(el){
//should return a node
}

convertBack('document.body').innerHTML = 'foo';
//should change the innerHTML of document.body to foo

这对你们中的一些人来说可能看起来没用,但这是我针对尚不存在的目标元素的解决方法。我没有使用任何库。

谢谢!

【问题讨论】:

  • 你真的想要'document.body'吗?只是出于好奇,你为什么要这个?
  • 是的,不是 [object HTMLBodyElement]。如果这对您有意义,我想将 DOM 元素作为源代码来定位...
  • 如果您包含最初的问题,可能会有更好/更简单的方法
  • 这听起来很像 X Y 问题。
  • 老实说有点像。但是,很多 JavaScript 库都可以像这样针对 DOM 元素,所以我相信有一些方法。

标签: javascript string function dom elements


【解决方案1】:

使用标准 JavaScript,以 e 作为元素:

转换为字符串:

const html = e.outerHTML

转换回元素:

const temp = document.createElement('div') // Can be any element
temp.innerHTML = html
const e = temp.children[0]

使用 jQuery 很容易,虽然我一般不鼓励使用它。

转换成字符串:

var s = e.outerHTML;

转换回元素:

var e = $(s)[0];

$("<div></div>") 解析 HTML 并返回一个 jQuery 对象。您可以使用[0]获取对第一个元素的引用

【讨论】:

  • 我没有使用 jQuery,但这肯定适用于某些元素。无论如何,谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-12-02
  • 2021-04-27
  • 2011-03-07
  • 2011-11-05
  • 1970-01-01
  • 2017-09-12
  • 1970-01-01
相关资源
最近更新 更多