如何从 head 部分中删除具有相同属性和标签名称的所有标签

问题描述

我正在制作一个JS函数,它会改变文档的图标。现在,我知道这听起来很简单,但事实并非如此。我正在尝试制作一个库,所以我需要一个可以将默认图标更改为所需图标的功能,反之亦然。如果我尝试将默认图标更改为所需图标,它可以正常工作,但是如果我尝试将图标更改为默认图标(带有灰色地球的那个),则它不起作用。

icon = function(dir){
        if(typeof(dir)==="string"){
            var elem = doc.createElement('link');
            elem.rel = "icon";
            elem.href = dir;
            doc.head.append(elem);
        }else if(typeof(dir)==="boolean"&&dir===false){
            var toBeDel = [];
            var currElems = document.querySelectorAll('link');
            var i = 0; var f = 0;
            while(currElems.length>=0){
                if(currElems[i].rel=="icon"){
                    toBeDel.push(currElems[i]);
                    currElems.length--;
                    i++;
                }
            }
            while(toBeDel.length>=0){
                doc.head.removeChild(toBeDel[f]);
                toBeDel.length--;
                f++;
            }
            var elem = doc.createElement('link');
            elem.rel = "icon";
            elem.href = "/default/noimage.png";
            doc.head.append(elem);
            window.setTimeout(function(){
                console.clear();
                var len = efun.logs.length;
                var sen;
                var i = 0;
                while(len>=0){
                    sen = efun.logs[i];
                    efun.gh = sen[0];
                    console.defaultLog(sen[0]);
                    len--;
                    i++;
                }
            },10);
        }
        else{
            efun.cons("Error in icon() function,the parameter you have entered is not a string directory.");
        }
    }

注意:efun 对象是主库对象,efun.cons()console.log() 的快捷方式,efun.logs 是包含所有console.logs() 完成的数组。请注意,我调用了 console.clear() 函数来消除当我尝试设置默认图标时出现的错误,因为它不存在。 console.deafultLog() 是一个函数,它 console.logs() 没有被推入 efun.logs 数组。但错误是我想从 head 标记中删除所有 <link rel="icon" href="<!---directory here-->" 元素。可以有很多带有图标的元素,所以我想删除所有这些元素。为此,我在数组中使用了 document.querySelectorAll(),并进行了几次 while 循环。但是,即使一个新的链接元素被附加到 <head> 标签中,我想删除的前一个元素仍然存在,所以我如何删除所有带有 <link> 标签和 {{1} 的标签} 属性。有没有办法解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)