javascript - 怎样用js将一个div中所有p段落中的西文字符(字母,数字等)用一对span包裹起来
黄舟
黄舟 2017-04-11 11:40:03
[JavaScript讨论组]

比如我有如下html代码

微软Windows 10操作系统

我希望js执行后把他变成这样

微软Windows 10操作系统

该如何实现呢?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(3)
ringa_lee

以下代码效率不高,但基本原理大概如此,你自己调试一下吧:

var str = $('#target p').html();
var result = '';
var chinese_flag = true;
for (var i=0; i<str.length; i++) {
  if (str.charCodeAt(i) > 256) {
    if (chinese_flag) {
      result += str.charAt(i);
    } else {
      chinese_flag = true;
      result += '</span>' + str.charAt(i);
    }
  } else {
    if (chinese_flag) {
      chinese_flag = false;
      result += '<span class="myclass">' + str.charAt(i);
    } else {
      result += str.charAt(i);
    }
  }
}
$('#target p').html(result);
PHP中文网
function replaceTextWithSpanWrap(id, tagName, className) {
    Array.prototype
         .slice
         .call(document.getElementById(id).getElementsByTagName(tagName))
         .map(function(node) {
              node.innerHTML = node.innerHTML.replace(/[A-Za-z0-9\s]+/g, function(text) {
                  return '<span class="' + className + '">' + text + '</span>';
              });
          });
}
replaceTextWithSpanWrap('target', 'p', 'myclass');

PHP中文网

分开来看:
1.找到所有的p标签
2.正则判断有无数字或字母出现
3.若有的话则用str.replace()函数替换每个符合的部分,前后加<span class="myClass"> </span>

下面的的代码是可以将span渲染出来的,如不需要渲染,将最后的innerHTML改为textContent即可

(function addSpans() {
    var paragraphs = document.getElementsByTagName("p"),
        temp;
    for (var i = 0, l = paragraphs.length; i < l; i++) {
        if (paragraphs[i].textContent.match(/[a-zA-Z0-9]+/)) {
            temp = paragraphs[i].textContent.replace(/[a-zA-Z0-9]+/g, function(word) {
                return '<span class="myClass">' + word + "</span>";
            });
            paragraphs[i].innerHTML = temp;
        }
    }
})();

参考资料:
str.replace()函数的用法
http://www.w3school.com.cn/jsref/jsref_replace.asp

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号