Frage

Ich habe diese HTML.

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

Wie kann ich einen dieser Links ausblenden, indem Sie das Attribut href verwenden und nur die letzten Zahlen (233.253), die Verbindung mit diesem Attribute href und die Klasse „link“?

zu verstecken

Dies ist kein funktionierenden Code, nur ich etwas zusammen, um es zu erklären, besser stellen. getElementsByTagName ( 'a'). Klasse ( 'link'). href = "* 233253"

Update: Leider hat es reine Javascript sein, nicht eine Bibliothek, und es hat auf IE6 zu arbeiten.

Update2: Ich habe keinen Zugriff auf den HTML-Code

War es hilfreich?

Lösung

<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>

Bearbeiten : Ich habe eine neue Version veröffentlicht, nachdem Sie Ihre Kommentare über das Lesen der Funktionalität innerhalb einer Funktion kapseln. Dies sollte man genauso gut wie die Vorgängerversion arbeiten.

Andere Tipps

Mit jQuery:

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

$ = Attributselektor passt auf alle Elemente, bei denen das ausgewählte Attribut mit dem angegebenen Wert endet.

[ Bearbeiten ]: Code etwas nachlässig war, soll jetzt funktionieren. Einschließlich der Split-Methode (siehe Kommentar).

Schleife durch die A-Elemente, überprüfen href und das Versteck gelten. Wie folgt aus:

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';
       }
}

oder

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';
   }
}

Nichts für ungut, aber sie schaffen Schleifen scheint wie eine Abhilfe zu mir. Wenn könnten Sie einzigartige IDs zu den Links hinzufügen, die offensichtlich die bevorzugte Methode sein würden.

Danach könnten Sie ‚getElementById‘ verwenden, um eine andere Klasse, um den besonderen Link zu verbergen.

Was unterscheidet einen Link von einem anderen? Wenn Sie wissen, dass dann auf der Serverseite entsprechende Klassennamen hinzufügen und die versteckt werden, in einer statischen Art und Weise, von der CSS.

dynamisch bestimmen, was muss Versteck Sie benötigen, um dynamisch Ihr Javascript-Schnipsel zu generieren, wenn Sie diese in der HTML machen.

Update:. Wenn Sie den Zugriff auf den erzeugten HTML nicht dann haben mein Beitrag, den Sie nicht helfen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top