首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有jQuery的情况下应用“:without”选择器?

如何在没有jQuery的情况下应用“:without”选择器?
EN

Stack Overflow用户
提问于 2013-09-27 20:44:38
回答 4查看 4.6K关注 0票数 1

我希望能够完成这个功能

代码语言:javascript
复制
$( "div:contains('John')" ).css( "text-decoration", "underline" );

如果不使用jQuery,直接使用javascript,我就找不到相应的

我知道我在寻找indexOf,但是把它放在一起并不能改变我目前的心态。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-27 20:49:16

像这样吗?

代码语言:javascript
复制
var divs= document.getElementsByTagName('div');
var len = divs.length;
for (var i = 0; i < len; i++) {
    if(divs[i].innerHTML.indexOf("John") != -1) {
        divs[i].className += " underline"
    }
}

在css中

代码语言:javascript
复制
.underline{
   text-decoration: underline;
}
票数 13
EN

Stack Overflow用户

发布于 2013-09-27 20:50:05

可能是这样的:

代码语言:javascript
复制
var elements = document.getElementsByTagName("div");
for (var i=0;i<elements.length;i++) {
    var elem = elements[i];
    if (elem.innerHTML.indexOf("John") != -1) {
        // do whatever you plan to do
    }
}
票数 5
EN

Stack Overflow用户

发布于 2013-09-27 20:56:52

如果您只需要支持现代浏览器(并实现您发布的“翻译”代码的目标):

代码语言:javascript
复制
var allDivs = document.querySelectorAll('div');

[].forEach.call(allDivs, function(a){
    if (a.textContent.indexOf('John') !== -1){
        a.style.textDecoration = 'underline';
    }
});

JS Fiddle演示

如果你希望它是不区分大小写的,并且避免匹配‘Johnson’的话:

代码语言:javascript
复制
var allDivs = document.querySelectorAll('div');

[].forEach.call(allDivs, function(a){
    if (/\bjohn\b/i.test(a.textContent)){
        a.style.textDecoration = 'underline';
    }
});

JS Fiddle演示

正如其他答案所显示的那样,最好避免直接设置元素的样式,而是使用CSS类名对元素进行样式化,这样,不样式化就不需要取消设置Node.style对象的单个属性。若要添加类,请使用上述方法(同样用于最新浏览器):

代码语言:javascript
复制
var allDivs = document.querySelectorAll('div');

[].forEach.call(allDivs, function(a){
    if (/\bjohn\b/i.test(a.textContent)){
        a.classList.add('underlined');
    }
});

JS Fiddle演示

仅突出显示名称“john”(或“john”)的所有实例:

代码语言:javascript
复制
var allDivs = document.querySelectorAll('div');

[].forEach.call(allDivs, function (a) {
    if (/\bjohn\b/gi.test(a.textContent)) {
        a.innerHTML = a.innerHTML.replace(/(\bjohn\b)/gi, '<span class="underlined">$1</span>');
    }
});

JS Fiddle演示

参考文献:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19059778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档