Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.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 获取标记后和标记中的内部数字_Javascript_Jquery - Fatal编程技术网

Javascript 获取标记后和标记中的内部数字

Javascript 获取标记后和标记中的内部数字,javascript,jquery,Javascript,Jquery,有一些内容 <p class="someclass"> slerert укенукен werwert wert <br> 1. вапр апоц вкен 8 ролгшщ 9 ар<br> 3. ап 7 варер прпрпр<br> ... </p> 是否可以更改紧跟其后且不接触其他数字的数字样式? 我们可以选择类似$p.someclass br的内容,但如何获取以下数字以更改其样式?这可

有一些内容

<p class="someclass">
    slerert укенукен werwert wert <br>
    1. вапр апоц вкен 8 ролгшщ 9 ар<br>
    3. ап 7 варер прпрпр<br>
    ...
</p>
是否可以更改紧跟其后且不接触其他数字的数字样式?
我们可以选择类似$p.someclass br的内容,但如何获取以下数字以更改其样式?

这可能不是最好的方法。但这可能有助于:

var htmlSplits=$.someclass.html.split; var modifiedSplits=htmlSplits.mapfunction split{ var str=split.replace/\\n/g.trim; console.log str; var regex=/^\d/; var matches=str.matchregex; 如果匹配 返回str.replace matches[0],+matches[0]+; 其他的 返回str; };//弗雷奇 var updatedHTML=modifiedSplits.join; $updated-text.html updatedHTML;

斯莱雷特·韦特·韦特·韦特 1.вапр апоц вкен 8 ролгшщ 9 ар 3.ап 7 варер прпрпр


好吧,您可以解析html,然后替换您想要的内容。。。但是它很难看

var text=$'.someclass'.html; text=text.replace/^\s*\d\./gm,$1 $'.someclass'.htmltext;

斯莱雷特·韦特·韦特·韦特 1.вапр апоц вкен 8 ролгшщ 9 ар 3.ап 7 варер прпрпр


您可以使用一个简单的正则表达式。通过document.querySelector查询段落

然后搜索与后跟一个点的数字匹配的所有实例。这个的正则表达式是/\d+\./g

\d表示0和9之间的数字 \+将匹配一个或多个数字 \.必须在正则表达式中转义句点 我们将简单地使用replace方法来替换这些实例,并将它们包装在标记中以使其加粗

VAR PAR=文件。 var数=PAR。 对于var i=0;i 斯莱雷特·韦特·韦特·韦特 1.вапр апоц вкен 8 ролгшщ 9 ар 3.ап 7 варер прпрпр ... 这是一个普通的JS,它使用Array.prototype.forEach循环并添加编号节点并替换编号文本-请参见下面的演示:

Array.prototype.forEach.calldocument.queryselectoral.someclass br,function e,i{ //从文本中提取编号 var el=document.createElement'b'; var text=/^\s*\d./.exece.nextSibling.nodeValue; //从下一个节点删除编号 e、 nextSibling.nodeValue=e.nextSibling.nodeValue.replace/^\s*\d./; //创建编号元素 如果文本{ el.appendChilddocument.createTextNodetext[0].trim; e、 parentNode.insertbeforel,e.nextSibling; } };

斯莱雷特·韦特·韦特·韦特 1.вапр апоц вкен 8 ролгшщ 9 ар 3.ап 7 варер прпрпр


您只需获取前面带小数的数字,然后将其更改为1美元:


你能解释一下改变它的风格意味着什么吗?请提供一个您尝试过的内容和所需输出的示例。@billynoah例如,转换1。放入1。如果你放入1。这可能会有所帮助。做事有好的方法,也有坏的方法。derloopcat试图通过询问您是否有权访问标记来帮助您以良好的方式做事。如果你不这样做,那么试图解析这个前端是可能的,但是,这不是我建议使用CSS和SPAN标签来对文本进行括号的最好方式,而不是使用JavaScript和JQueRE。这会管用的,但你为什么要这样做我不能imagine@McHat你是说我用了更长的时间来替换数字?实际上我对正则表达式不是很好,所以,用这种方法解决了它。上面的Patrick以非常简洁的方式实现了解决方案。不,我的意思是正确的答案是修复标记。用这种方式进行破解是肮脏、丑陋和错误的。它确实回答了他最初的问题,尽管你是对的@McHat。但他可能是从某个服务器以这种格式获取html,而它可能无法控制它。谢谢:我要承认一些事情。这不是一个理想的正则表达式。因为它不匹配以数字后跟点开头的行。我尝试了类似/^\s?\d+\./gm的方法,但它说无法读取未定义的属性长度。有人能帮我改进一下这个规则吗?我投他的票。这是一个比我的答案更好的答案,因为它能找到以数字开头,后跟点的行。
var p = $('.someclass').html();

p = p.replace(/([0-9]\.)/g, "<b>$1</b>");                   

$('.someclass').html(p);