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) だけを使用してこれらのリンクの 1 つを非表示にし、この 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 から非表示にします。

何を非表示にする必要があるかを動的に判断するには、HTML 内でこれをレンダリングしない限り、JavaScript スニペットを動的に生成する必要があります。

更新:生成された HTML にアクセスできない場合、私の投稿は役に立ちません。

于 2009-03-06T06:53:20.213 に答える