Javascript 正则表达式类名问题

Javascript regex classname issue

本文关键字:问题 正则表达式 Javascript      更新时间:2023-09-26

为这个问题的模糊标题道歉!

我有以下JS,它查找带有某些来源图像的img标签。然后,它将 img 标签替换为跨度,以便我可以用图标字体替换图像/图标。

var paths = [       
    "folder%2Fadd",
    "folder%2Fclear",
    "folder%2Fdelete",
    "folder%2Fedit",
    "folder%2Fmove",
    "folder%2Fsort",
    ];

    var fullPaths = paths.map(function(x) { return "img[src*='" + x + "']"; } );
    var imgs = document.querySelectorAll(fullPaths);
        for (var i = 0; i < imgs.length; i++) {
            var span = document.createElement("span");
            span.addClass("iconfont");
            span.title = imgs[i].parentNode.title;
            imgs[i].parentNode.replaceChild(span, imgs[i]);

        }

到目前为止,一切进展顺利,但还有一个问题我无法解决。

除了在 .iconfont 的跨度中添加一个类之外,我还想在跨度中添加另外两个类 - 1 ) 被替换的 img 元素的原始类,以及 2) 图像源的名称,如我的数组,但没有前面的"文件夹/"位。

所以,目前我有:

<img class = "tinyicon" src="******/t/edit">

我的脚本在 DOM 中创建这个:

<span class = "iconfont">

但我希望我的脚本创建以下内容:

<span class = "iconfont tinyicon edit">

这就是我所追求的:)

感谢您的观看!

var paths = [       
    "folder%2Fadd",
    "folder%2Fclear",
    "folder%2Fdelete",
    "folder%2Fedit",
    "folder%2Fmove",
    "folder%2Fsort",
    ];

var fullPaths = paths.map(function(x) { return "img[src*='" + x + "']"; } );
var imgs = document.querySelectorAll(fullPaths);
for (var i = 0; i < imgs.length; i++) {
    var img    = imgs[i],
        iClass = img.className,
        iSrc   = img.src.split('/').pop(),
        span   = $('<span />', {'class': 'iconfont '+iClass+' '+iSrc,
                                title  : img.parentNode.title
                 });
    $(img).replaceWith(span);
}

更改以下内容:

 var span = document.createElement("span");
 span.addClass("iconfont");

对此:

 var span = document.createElement("span");
 span.className = "iconfont tinyicon edit";

无论如何,你的addClass()都不起作用,因为span是一个DOM节点,而不是jQuery对象。

        var span = document.createElement("span");
        var className = "iconfont " + imgs[i].className + ' ' + imgs[i].src.match(/([a-z])$/i, '')
        span.className  = className ;
        span.title = imgs[i].parentNode.title;
        imgs[i].parentNode.replaceChild(span, imgs[i]);