javascript - 如何使用 Javascript 根据元素内容更改 css 样式

标签 javascript css stylesheet

在下面的代码中,我想隐藏任何不包含特定内容的 li 标签。例如,隐藏任何不包含“ALL”或“LOGO”文本内容的li标签,如下图。

<ul>
    <li class="filterTag">
        <span><a href="~">ALL</a></span>
    </li>
    <li class="filterTag">
        <span><a href="~">GUIDES</a></span>
    </li>
    <li class="filterTag">
        <span><a href="~">LOGO</a></span>
    </li>
    <li class="filterTag">
        <span><a href="~">ICON</a></span>
    </li>
 </ul>

我知道下面的 css 隐藏了 li:

<li style="display:none;">

但是,我希望有人可以帮助搜索 li 内容的 Javascript 函数,找到匹配值,然后转换 class="filterTag"style="display:none;"

以下 JS 代码对我不起作用,但是它来自另一个示例,不确定是否需要所有代码:

var listLi=document.getElementsByTagName("li").getElementsByClassName('filterTag');
for(var i=0;i<listLi.length;i++) {
    var listLink = listLi[i].getElementsByTagName("a");
    for(var j=0;i<listLink .length;i++) {
        if(listLink [j].innerHTML!==('ALL' || 'LOGO'))
            listLink [j].style.display="none";
    }
}

请注意,我还添加了额外的过滤器:

.getElementsByClassName('filterTag') 因为页面上还有其他 li

请注意我是否需要添加额外的内容:

.getElementsByTagName("a");?

最佳答案

最好在 CSS 中分离样式而不是编写内联样式。所以只需添加一个类(在本例中 fancy,根据您的需要进行更改)为了说明而不是隐藏,我添加了一个 background-color: orange;

请仔细阅读代码中的注释

var needles = ["ALL", "LOGO"]; // define the needles you need to find
var filterTags = document.querySelectorAll('.filterTag'); // get all filterTags
filterTags.forEach(function(filterTag){ // iterate over all filterTags
    if(needles.includes(filterTag.textContent.trim())) { // here the magic happens:
        // it compares if filterTag content is in the array of needles
        // if so we add the class name fancy 
        filterTag.classList.add('fancy');
        // instead of the above line you could do:
        // filterTag.style.display = "none";
    }
});
.fancy {
    /* change the style to display none instead of background-color */
    /* display: none; */
    background-color: orange;
}
<ul>
    <li class="filterTag">
        <span><a href="~">ALL</a></span>
    </li>
    <li class="filterTag">
        <span><a href="~">GUIDES</a></span>
    </li>
    <li class="filterTag">
        <span><a href="~">LOGO</a></span>
    </li>
    <li class="filterTag">
        <span><a href="~">ICON</a></span>
    </li>
 </ul>

关于javascript - 如何使用 Javascript 根据元素内容更改 css 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57816661/

相关文章:

html - 使用 Bootstrap - 4 垂直分割一半屏幕以显示图像直到屏幕边缘

html - CSS div 布局修复

css - 无法在 wordpress 网站上加载资源 : the server responded with a status of 404 () + . ttf 文件

asp.net - 如何在 asp.net 页面或其后面的代码中添加 css 类并赋予样式

javascript - 级联对象声明给出了第二个对象的未定义 typeof

javascript - 使用自定义链接单击传单 map 中的 openPopup()

javascript - 使用 chrome 扩展更改 div 中的样式表

JavaScript 从站点目录预加载随机命名的图像

CSS text-decoration 属性不能被子元素覆盖

css - IE8/IE9不加载CSS