Domanda

Ho questo html.

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

Come posso nascondere uno di questi collegamenti usando l'attributo href e solo gli ultimi numeri (233253), per nascondere il collegamento con questo attributo href e la classe " link " ;?

Questo non è un codice funzionante, solo qualcosa che ho messo insieme per spiegarlo meglio. .. GetElementsByTagName ( 'a') di classe ( 'link') href = " * 233.253 "

Aggiornamento: Purtroppo deve essere javascript puro, non utilizzare una libreria e deve funzionare su IE6.

Update2: Non ho accesso all'html

È stato utile?

Soluzione

<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] + "<*>quot;);
                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>

Modifica : ho pubblicato una nuova versione dopo aver letto il tuo commento sull'incapsulamento della funzionalità all'interno di una funzione. Questo dovrebbe funzionare allo stesso modo della versione precedente.

Altri suggerimenti

Uso di jQuery:

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

Il selettore $ = dell'attributo corrisponde a tutti gli elementi in cui l'attributo selezionato termina con il valore dato.

[ modifica ]: il codice era un po 'sciatto, ora dovrebbe funzionare. Incluso il metodo split (vedi commenti).

Scorri gli elementi a, controlla href e applica il nascondiglio. In questo modo:

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

OPPURE

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

Nessuna offesa ma la creazione di loop mi sembra una soluzione alternativa. Se potessi aggiungere ID univoci ai link sarebbe ovviamente il metodo preferito.

Dopodiché puoi usare 'getElementById' per impostare una classe diversa per nascondere il particolare link.

Cosa distingue un collegamento da un altro? Se sai che sul lato server aggiungi i nomi di classe appropriati e che saranno nascosti, in modo statico, dal CSS.

La determinazione dinamica di ciò che deve essere nascosto richiederà la generazione dinamica dello snippet javascript, a meno che non venga eseguito il rendering all'interno dell'HTML.

Aggiornamento: se non hai accesso al codice HTML generato, il mio post non ti aiuta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top