我正在尝试编写自己的 Javascript 代码,将 html 转换为 ascii 代码(用于学习目的),以便浏览器呈现代码,就像您在文本编辑器中看到的那样。
在 Stack 上环顾四周后,我已经得到了下面的结果。我正在尝试将 html 元素转换为字符串;在这个阶段我只是想 .replace()
将尖括号转换为 ascii。如果有人能告诉我就测试而言我哪里出了问题<body>
标签显示在控制台中,我们将不胜感激。
<code class="lang-html">
<body></body>
</code>
(function() {
var html = $('.lang-html').innerHTML;
html.replace('<', '<');
html.replace('>', '>');
console.log(html);
});
澄清一下,我希望控制台会输出 <body></body>
.
任何帮助将不胜感激。
最佳答案
一些事情:
$('.lang-html').innerHTML
假设这是 jQuery,这将不起作用。 .innerHTML
仅适用于原始 DOM 元素,例如从 document.getElementById(...)
返回的内容。相反,$('.lang-html')
返回一个 jQuery 集合,它有自己的访问器方法。你应该这样做:
$('.lang-html').html() // get the HTML as text from this element
继续,.replace()
不会修改原始字符串。它返回一个新副本。在最简单的情况下,您可以这样做:
var html = $('.lang-html')
.html()
.replace('<', '<')
.replace('>', '>');
但是您仍然需要将其重新分配给 HTML 源。同样,jQuery 为此提供了一个简单的 API。
$('.lang-html').html(html);
但是,还有一个问题。 .replace()
仅替换字符串中的第一个匹配项。要替换所有这些,您需要构造一个正则表达式并使用 /g
(全局)标志。完整代码如下:
var $element = $('.lang-html');
var html = $element.html()
.replace(/</g, '<')
.replace(/>/g, '>');
$element.html(html)
关于javascript - 内部 HTML 转 ascii,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33359983/