javascript - 内部 HTML 转 ascii

标签 javascript jquery html ascii

我正在尝试编写自己的 Javascript 代码,将 html 转换为 ascii 代码(用于学习目的),以便浏览器呈现代码,就像您在文本编辑器中看到的那样。

在 Stack 上环顾四周后,我已经得到了下面的结果。我正在尝试将 html 元素转换为字符串;在这个阶段我只是想 .replace()将尖括号转换为 ascii。如果有人能告诉我就测试而言我哪里出了问题<body>标签显示在控制台中,我们将不胜感激。

<code class="lang-html">
  <body></body>
</code>

(function() {
  var html = $('.lang-html').innerHTML;
  html.replace('<', '&lt;');
  html.replace('>', '&gt;');
  console.log(html);
});

澄清一下,我希望控制台会输出 &lt;body&gt;&lt;/body&gt; .

任何帮助将不胜感激。

最佳答案

一些事情:

$('.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('<', '&lt;')
    .replace('>', '&gt;');

但是您仍然需要将其重新分配给 HTML 源。同样,jQuery 为此提供了一个简单的 API。

$('.lang-html').html(html);

但是,还有一个问题。 .replace() 仅替换字符串中的第一个匹配项。要替换所有这些,您需要构造一个正则表达式并使用 /g (全局)标志。完整代码如下:

var $element = $('.lang-html');

var html = $element.html()
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;');

$element.html(html)

关于javascript - 内部 HTML 转 ascii,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33359983/

相关文章:

html - 使 div 视频背景淡出 - 这可能吗?

javascript - 模板中的更改不影响相关文件

javascript - 提交表单无需重新加载

java - 如何将 d3 (javascript) 添加到 vaadin 应用程序?

javascript - 从下拉列表中选择选项时响应警告

javascript - 为什么在移动设备上单击涉及 jQuery ('#item' ).fadeOut() 调用的 <div>, '#item' css 保持其先前的悬停状态?

javascript - 我们是否需要检查我们的站点在 Firefox 3.5 和 3.6 上的兼容性?

javascript - 单击链接时关闭全屏导航覆盖

javascript - 使用jquery分页插件进行分页

jQuery:跟踪浏览器自动完成中的点击的事件