使用Javascript判断元素中是否含有某个样式

tip:引入了Moment.js格式化前端页面显示时间

假设我们有如下元素

<div id="LL" class="a b hello-world"></div>

1.简单正则匹配法
即使用正则判断单词边界的方式判断是否存在className

function hasClass(element,className){
        const regExp = new RegExp("\\b" + className + "\\b","gi");
        return regExp.test(element.className);
    }
    const LL = document.getElementById('LL');
    console.log(hasClass(LL,'a'));                                                  //..true
    console.log(hasClass(LL,'b'));                                                  //..true
    console.log(hasClass(LL,'hello-world'));                                    //..true
    console.log(hasClass(LL,'hello'));                                              //..true
    console.log(hasClass(LL,'world'));                                              //..true

在样式的名字为hello-world之类的带有-连接符的情况,测试hello和world都会返回true,这并不满足我们的预期。

2.IndexOf方法
也会导致这样的问题

 function hasClass(element,className){
        return element.className.indexOf(className) > -1;
    }
    const LL = document.getElementById('LL');
    console.log(hasClass(LL,'a'));                                                  //..true
    console.log(hasClass(LL,'b'));                                                  //..true
    console.log(hasClass(LL,'hello-world'));                                    //..true
    console.log(hasClass(LL,'hello'));                                              //..true
    console.log(hasClass(LL,'world'));                                              //..true
    console.log(hasClass(LL,'h'));                                              //..true
    console.log(hasClass(LL,'e'));                                              //..true
    console.log(hasClass(LL,'l'));                                              //..true

这时候,不仅hello和world返回true,h/e/l/等单个字符都会返回true
我们改进一下方法:

function hasClass(element,className){
        return (" "+element.className + "  ").indexOf(" " + className + " ") > -1;
    }
    const LL = document.getElementById('LL');
    console.log(hasClass(LL,'a'));                                                  //..true
    console.log(hasClass(LL,'b'));                                                  //..true
    console.log(hasClass(LL,'hello-world'));                                    //..true
    console.log(hasClass(LL,'hello'));                                              //..false
    console.log(hasClass(LL,'world'));                                              //..false
    console.log(hasClass(LL,'h'));                                              //..false
    console.log(hasClass(LL,'e'));                                              //..false
    console.log(hasClass(LL,'l'));                                              //..false

现在根据样式名称加” “的方式,判断一个元素是否含有该样式。在大部分的测试中,已经没有了问题。
但是!!!我们遇到这样的神奇代码

<div id="LL" class="a   b  hello-world"></div>

思路:根据className匹配元素数组,然后查找其中是否含有对应的元素

<div id="LL" class="a b hello-world"></div>

<script>
    function hasClass(element,className){
        var aSameClassEle = document.getElementsByClassName(className);
        for(var i = 0;i < aSameClassEle.length;i++){
            if(aSameClassEle[i] === element){
                return true;
            }
        }
        return false;
    }
    let obj = document.getElementById("LL");
    console.log(hasClass(obj,'a'));                                                 //..true
    console.log(hasClass(obj,'c'));                                                 //..false
</script>
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以使用CSS选择器来获取HTML样式里的链接。具体方法是使用a标签选择器,例如:a {color: red;},这将会把所有链接的颜色设置为红色。如果您只想获取某个特定的链接,可以使用类选择器或ID选择器,例如:.my-link {color: blue;},这将会把class为“my-link”的链接的颜色设置为蓝色。 ### 回答2: 要获取HTML样式里的链接,可以通过以下步骤进行: 1. 使用HTML解析库,如BeautifulSoup或PyQuery等库,读取和解析HTML文件。 2. 通过选择器选择包含链接的样式元素,一般是`<a>`标签。 3. 对选择的样式元素进行处理,可以使用相应库提供的方法,如`.text`获取链接的文本内容,`.get('href')`获取链接的地址等。 4. 遍历所有选样式元素,获取并存储链接的文本内容和地址等信息。 5. 根据需求对链接进行进一步处理,如提取特定特征的链接、过滤非法或重复链接等。 6. 最后,可以将获取到的链接进行输出打印或存储到其他文件,以便后续使用。 以上是一种常见的获取HTML样式里链接的方法,可以根据具体的需求和使用场景进行相应的调整和补充。 ### 回答3: 要获取HTML样式里的链接,可通过以下几个步骤实现: 1. 使用HTML解析器:首先,需要使用合适的HTML解析器,例如Python的BeautifulSoup库或者Java的Jsoup库,来对HTML进行解析和处理。 2. 定位样式标签:在解析HTML后,需要找到包含样式信息的标签。一般情况下,样式信息会被包含在`<style>`或者`<link>`标签。 3. 提取链接地址:如果样式信息存在于`<style>`标签,可以使用正则表达式或者字符串操作来提取其的链接地址。如果样式信息存在于`<link>`标签,可以直接获取`href`属性的值,该值即为链接地址。 4. 进一步处理:获取链接地址后,可以对其进行进一步处理。例如,可以判断链接类型(内部链接或外部链接)、过滤无效链接(例如空链接或者`javascript:void(0)`),或者进行二次清理(如去除查询参数等)。 需要注意的是,获取样式的链接并不包括HTML具有`<a>`标签的超链接,而是指样式文件(CSS或外部样式表)的链接。同时,由于不同的HTML结构和样式设置,获取样式的链接可能会有不同的具体实现方法。因此,以上步骤仅提供了一般化的指导原则,具体实现还需要根据具体情况来确定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值