HTML-如何在没有硬编码的情况下将<span> </ span>标记插入<pre> </ pre>块的每一行?

郝黄

我只是想在使用CSS的源代码开头添加行号。我意识到我想要的效果,如下所示:

实施效果

但是,HTML代码需要持续使用<span>...</span>标签:

<pre class="code">
  <span>var links = document.getElementsByClassName("link");</span>
  <span>for(var i = 0; i &lt; links.length; i++){</span>
  <span>  links[i].onclick=function(){</span>
  <span>   alert(i+1);</span>
  <span>  };</span>
  <span>}</span>
</pre>

通过将span标签放置在行的起始/结尾,我可以让行号按预期显示。但是我认为必须有另一个更好的解决方案,以防止我添加所有这些span硬编码的标签,也许是使用Javascript或jQuery,我不介意但不知道如何。请帮忙。

注意:
我的问题不是当<span>标签已经存在时如何显示行号相反,我想知道原始HTML代码是否包含NO<span>标签,如何将它们自动添加到合适的位置,以便可以应用CSS样式。

l1em1on1

我已将@Stewartside答案与您实际要求的内容结合在一起。

在下面,您可以看到一个简单的普通JavaScript,它将元素中的任何行替换为使用@Stewartside css封装在span中的代码

var codeElement = document.getElementsByClassName("code"); //array of code blocks
var formattedCode = codeElement[0].textContent.replace("\r\n", "\n").split("\n");
var codeLength = formattedCode.length;
formattedCode.forEach(function(line, index, array) {
  if (codeLength - 1 == index) return; 
  array[index] = "<span>" + line + "</span>";
});

codeElement[0].innerHTML = formattedCode.join("\n");

$(".code-jquery").each(function(index, codeElement) {
  var formattedCode = $(codeElement).html().replace("\r\n", "\n").split("\n");
  
  var codeLength = formattedCode.length;
  $(codeElement).text("");
  $.each(formattedCode, function(index, line) {
    if (codeLength - 1 == index) return;
    $(codeElement).append("<span>" + line + "</span>\n")
  });
});
pre {
  background: #eee;
  counter-reset: section; /* Reset the counter to 0 for each new pre */
}
pre span:before {
  counter-increment: section; /* Increment the section counter*/
  content: counter(section); /* Display the counter */
  padding: 0 5px;
  border-right: 1px solid #777;
  margin-right: 5px;
  color: #777
}

pre.code-jquery span {
  color: green;
}
<pre class="code">
  var links = document.getElementsByClassName("link");
  for(var i = 0; i &lt; links.length; i++) {
    links[i].onclick = function() {
    	alert(i+1);
  	};
  }
</pre>

//jQuery version
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre class="code-jquery">
  var links = document.getElementsByClassName("link");
  for(var i = 0; i &lt; links.length; i++) {
    links[i].onclick = function() {
    	alert(i+1);
  	};
  }
</pre>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用<span>将<pre>内的文本换行

来自分类Dev

应用所有<span>样式,但<pre>或<code>中的元素除外

来自分类Dev

如何使用不带CSS的pre标签显示span标签

来自分类Dev

如何在<pre>标记的每一行末尾添加<br />?

来自分类Dev

如何在<pre>标记的每一行末尾添加<br />?

来自分类Dev

XQUERY:如何更新HTML文本,将行括在<span>标记中

来自分类Dev

不带<span>的情况下获取HTML标记的主要文本内容

来自分类Dev

删除<pre>标记中的空格-html

来自分类Dev

HTML Bootstrap一行中的多个<pre>不带空格

来自分类Dev

docx4j html转换将一行分成多个span元素

来自分类Dev

如何将数据插入<span class =“ error”> </ span>

来自分类Dev

在不使用span或html标记中新增任何内容的情况下,是否可以在p标记中使用?

来自分类Dev

使用正则表达式删除一些HTML标记,但保留Span标记

来自分类Dev

使用正则表达式删除一些HTML标记,但保留Span标记

来自分类Dev

如何对HTML进行编码,但在ASP.NET中保留诸如<span>标记之类的某些元素?

来自分类Dev

随后的 <pre> 块被包装到下一行

来自分类Dev

从<pre> </ pre>标记内部删除<br />

来自分类Dev

如何在Jade中将<pre>中的文本和HTML标记混合而不删除换行符?

来自分类Dev

如何减少<pre>的行空间

来自分类Dev

将嵌套的div / span强制到一行

来自分类Dev

<span>内部<form>标记

来自分类Dev

为什么我的“ pre” HTML标记在一个特定实例中不起作用?

来自分类Dev

如何清除html中的pre标签

来自分类Dev

<pre>标记内的HTML代码,innerHTML不会返回所有代码

来自分类Dev

html <pre>标签的问题

来自分类Dev

如何删除退格上插入的<span>?

来自分类Dev

Chrome为什么要在“ pre”标记中加载HTML?

来自分类Dev

如何从span html python中获取文本

来自分类Dev

获取HTML span标记内的所有文本,并使用javascript将其聚类

Related 相关文章

  1. 1

    用<span>将<pre>内的文本换行

  2. 2

    应用所有<span>样式,但<pre>或<code>中的元素除外

  3. 3

    如何使用不带CSS的pre标签显示span标签

  4. 4

    如何在<pre>标记的每一行末尾添加<br />?

  5. 5

    如何在<pre>标记的每一行末尾添加<br />?

  6. 6

    XQUERY:如何更新HTML文本,将行括在<span>标记中

  7. 7

    不带<span>的情况下获取HTML标记的主要文本内容

  8. 8

    删除<pre>标记中的空格-html

  9. 9

    HTML Bootstrap一行中的多个<pre>不带空格

  10. 10

    docx4j html转换将一行分成多个span元素

  11. 11

    如何将数据插入<span class =“ error”> </ span>

  12. 12

    在不使用span或html标记中新增任何内容的情况下,是否可以在p标记中使用?

  13. 13

    使用正则表达式删除一些HTML标记,但保留Span标记

  14. 14

    使用正则表达式删除一些HTML标记,但保留Span标记

  15. 15

    如何对HTML进行编码,但在ASP.NET中保留诸如<span>标记之类的某些元素?

  16. 16

    随后的 <pre> 块被包装到下一行

  17. 17

    从<pre> </ pre>标记内部删除<br />

  18. 18

    如何在Jade中将<pre>中的文本和HTML标记混合而不删除换行符?

  19. 19

    如何减少<pre>的行空间

  20. 20

    将嵌套的div / span强制到一行

  21. 21

    <span>内部<form>标记

  22. 22

    为什么我的“ pre” HTML标记在一个特定实例中不起作用?

  23. 23

    如何清除html中的pre标签

  24. 24

    <pre>标记内的HTML代码,innerHTML不会返回所有代码

  25. 25

    html <pre>标签的问题

  26. 26

    如何删除退格上插入的<span>?

  27. 27

    Chrome为什么要在“ pre”标记中加载HTML?

  28. 28

    如何从span html python中获取文本

  29. 29

    获取HTML span标记内的所有文本,并使用javascript将其聚类

热门标签

归档