隐藏具有特定类和属性的链接

发布于 2024-07-15 02:54:27 字数 446 浏览 9 评论 0原文

我有这个html。

<a class="link" href="www.website.com?id=233253">test1</a>
<a class="link" href="www.website.com?id=456456">test2</a>

如何通过使用 href 属性和最后一个数字 (233253) 来隐藏这些链接之一,以隐藏具有此 href 属性和类“link”的链接?

这不是一个有效的代码,只是我为了更好地解释它而整理的代码。 getElementsByTagName('a').class('link').href="*233253"

更新: 不幸的是它必须是纯 JavaScript,不使用库,并且它必须在 IE6 上工作。

更新2: 我无权访问 html

I have this html.

<a class="link" href="www.website.com?id=233253">test1</a>
<a class="link" href="www.website.com?id=456456">test2</a>

How can I hide one of these links by using the href attribute, and just the last numbers (233253), to hide the link with this href attribute and the class "link"?

This is not a working code, just something i put together to explain it better.
getElementsByTagName('a').class('link').href="*233253"

Update:
Unfortunately it has to be pure javascript, not using a library, and it has to work on IE6.

Update2:
I don't have access to the html

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

盗心人 2024-07-22 02:54:28

使用 jQuery:

$("a.link[href$='233253']").hide();

$= 属性选择器匹配所选属性以给定值结尾的所有元素。

Using jQuery:

$("a.link[href$='233253']").hide();

The $= attribute selector matches all elements where the selected attribute ends with the given value.

从来不烧饼 2024-07-22 02:54:28

[编辑]:代码有点草率,现在应该可以工作了。 包括 split 方法(见注释)。

循环遍历 a 元素,检查 href 并应用隐藏。 像这样:

var refs = document.getElementsByTagName('a');
for (var i=0;i<refs.length;i++) {
       if (
             refs[i].href &&
             refs[i].href.replace(/(\d+$)/,'$1').match('[your value to match]')
          ) {
           refs[i].className = refs[i].className.replace(/link/i,'');
           refs[i].style.display = 'none';
       }
}

for (var i=0;i<refs.length;i++) {
   var hs = refs[i].href.split(/=/)[1];
   if (  hs.match([your value to match]) ) {
       refs[i].className = refs[i].className.replace(/link/i,'');
       refs[i].style.display = 'none';
   }
}

[edit]: code was somewhat sloppy, should work now. Including the split method (see comments).

Loop through the a elements, check href and apply the hiding. Like this:

var refs = document.getElementsByTagName('a');
for (var i=0;i<refs.length;i++) {
       if (
             refs[i].href &&
             refs[i].href.replace(/(\d+$)/,'$1').match('[your value to match]')
          ) {
           refs[i].className = refs[i].className.replace(/link/i,'');
           refs[i].style.display = 'none';
       }
}

OR

for (var i=0;i<refs.length;i++) {
   var hs = refs[i].href.split(/=/)[1];
   if (  hs.match([your value to match]) ) {
       refs[i].className = refs[i].className.replace(/link/i,'');
       refs[i].style.display = 'none';
   }
}
同尘 2024-07-22 02:54:28
<html>
<head>
<script type="text/javascript">

function hideLinks(className, ids) {
    var links = document.getElementsByTagName("a");
    var max   = links.length;

    for (var i=0; i<max; i++) {
        var link   = new RegExp("(\s*)"+ className +"(\s*)");
        var isLink = link.test(links[i].className);

        if (isLink) {
            for (var j=0; j<ids.length; j++) {
                var regexp = new RegExp(ids[j] + "$");
                var hasId  = regexp.test(links[i].href);

                if (hasId) {
                    links[i].style.display = "none";
                }
            }
        }
    }
}

window.onload = function() {
    hideLinks("link", [233253]);
}
</script>
</head>
<body>

<a class="link" href="www.website.com?id=233253">test1</a>
<a class="link" href="www.website.com?id=456456">test2</a>


</body>
</html>

编辑:在阅读您关于将功能封装在函数中的评论后,我发布了一个新版本。 这个版本应该和之前的版本一样有效。

<html>
<head>
<script type="text/javascript">

function hideLinks(className, ids) {
    var links = document.getElementsByTagName("a");
    var max   = links.length;

    for (var i=0; i<max; i++) {
        var link   = new RegExp("(\s*)"+ className +"(\s*)");
        var isLink = link.test(links[i].className);

        if (isLink) {
            for (var j=0; j<ids.length; j++) {
                var regexp = new RegExp(ids[j] + "$");
                var hasId  = regexp.test(links[i].href);

                if (hasId) {
                    links[i].style.display = "none";
                }
            }
        }
    }
}

window.onload = function() {
    hideLinks("link", [233253]);
}
</script>
</head>
<body>

<a class="link" href="www.website.com?id=233253">test1</a>
<a class="link" href="www.website.com?id=456456">test2</a>


</body>
</html>

Edit: I posted a new version after reading your comment about encapsulating the functionality inside a function. This one should work just as well as the previous version.

厌味 2024-07-22 02:54:28

无意冒犯,但创建循环对我来说似乎是一种解决方法。 如果您可以向链接添加唯一的 ID,这显然是首选方法。

之后,您可以使用“getElementById”设置不同的类来隐藏特定链接。

No offense but creating loops seems like a workaround to me. If you could add unique id's to the links that would obviously be the preferred method.

After that you could use 'getElementById' to set a different class to hide the particular link.

﹉夏雨初晴づ 2024-07-22 02:54:28

一个链接与另一个链接有何区别? 如果您知道服务器端的情况,请添加适当的类名,这些类名将以静态方式从 CSS 中隐藏。

动态确定需要隐藏的内容将需要您动态生成 JavaScript 代码片段,除非您在 HTML 中渲染它。

更新:如果您无权访问生成的 HTML,那么我的帖子对您​​没有帮助。

What distinguishes one link from another? If you know that on the server side then add appropriate classnames and which will be hidden, in a static way, from the CSS.

Dynamically determining what needs hiding will require you to dynamically generate your javascript snippet, unless you render this inside the HTML.

Update: If you don't have access to the generated HTML then my post does not help you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文