1

我有这个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 属性和类“链接”的链接?

这不是一个工作代码,只是我放在一起更好地解释它的东西。getElementsByTagName('a').class('link').href="*233253"

更新:不幸的是,它必须是纯 javascript,不使用库,并且必须在 IE6 上运行。

Update2:我无权访问 html

4

5 回答 5

4

[编辑]:代码有点草率,现在应该可以工作了。包括 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';
   }
}
于 2009-03-05T09:21:36.463 回答
4

使用 jQuery:

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

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

于 2009-03-05T09:25:41.960 回答
3
<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>

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

于 2009-03-05T09:27:37.557 回答
1

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

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

于 2009-03-06T06:51:12.433 回答
-1

一个链接与另一个链接的区别是什么?如果您在服务器端知道这一点,则添加适当的类名,这些类名将以静态方式从 CSS 中隐藏。

动态确定需要隐藏的内容将需要您动态生成 javascript 片段,除非您在 HTML 中呈现它。

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

于 2009-03-06T06:53:20.213 回答