0

我需要隐藏在其 ID 中任何位置具有字符串“replies-36965584”的所有元素。

HTML:

<div id="replies-36965584_1">aaaa</div>
<div id="replies-36965584_2">aaaa</div>
<div id="replies-36965584_3">aaaa</div>
<div id="replies-36965584_4">aaaa</div>
<div id="replies-36222224_2">nnnn</div>

JavaScript:

document.getElementById("replies-36965584").style.display="none"

如何修改此 JS 以选择前四个元素?

4

5 回答 5

1

您可以使用 CSS 和属性选择器来做到这一点。

[att^=val]

表示具有 att 属性的元素,其值以前缀“val”开头。如果 "val" 是空字符串,则选择器不代表任何内容。

来源:http ://www.w3.org/TR/css3-selectors/#attribute-substrings


jsfiddle

CSS

[id^="replies-36965584_"] {
    display: none;
}
于 2013-08-29T19:48:19.587 回答
0

使用 jQuery 是一种选择吗?如果是这样,这很简单:

$(document).ready(function(){
    $('div[id^="replies-36965584"]').hide();
});

如果你不熟悉 jQuery,这里有一个开始的链接:http ://learn.jquery.com/javascript-101/getting-started/

编辑:修复语法错误。

编辑:添加 jsFiddle:http: //jsfiddle.net/xbVp9/

于 2013-08-29T19:46:38.317 回答
0

如果您不知道某些文字值但您知道一般模式并且只有数字会改变,那么我会考虑一些与正则表达式的匹配。

于 2013-08-29T19:46:42.720 回答
0

你可以用痛苦的方式做到这一点:

var o = document.getElementsByTagName("div");
for (var i=0;i<o.length;i++) { 
    if(o[i].id.indexOf('replies-36965584') == 0) {
        o[i].style.display = 'none';
    }
}
于 2013-08-29T19:53:32.687 回答
0

据我所知,使用 vanilla javascript 执行此操作的唯一方法是获取页面上的所有 div,并测试所需的 id。

var divs = document.getElementsByTagName('div');
for (var i = 0; i < divs.length; ++i) {
    var div = divs[i];
    if (/replies-36965584/.test(div.id)) {
        div.style.display = 'none';
    }
}
于 2013-08-29T19:53:43.437 回答