Pergunta

Eu tenho este HTML.

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

Como posso ocultar um desses links usando o atributo href, e apenas os últimos números (233253), para esconder o link com esse atributo href e do "link" classe?

Este não é um código de trabalho, apenas algo que eu colocados juntos para explicar melhor. getElementsByTagName ( 'a'). classe ( 'link'). href = "* 233253"

Update: Infelizmente ele tem que ser javascript puro, não usar uma biblioteca, e tem que trabalhar no IE6.

Update2: Eu não tenho acesso ao html

Foi útil?

Solução

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

Editar : eu postei uma nova versão depois de ler seus comentários sobre encapsular a funcionalidade dentro de uma função. Este deve funcionar tão bem como a versão anterior.

Outras dicas

Usando jQuery:

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

A $ = seletor de atributo corresponde a todos os elementos, onde as extremidades de atributos selecionados com o valor fornecido.

[ Editar ]: O código foi um pouco desleixado, deve funcionar agora. Incluindo o método split (ver comentários).

Curva através do um elementos, href cheque e aplicar o esconderijo. Como esta:

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

ou

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

Sem ofensa, mas loops de criação parece ser uma solução para mim. Se você pode adicionar original ID de que as ligações que, obviamente, ser o método preferido.

Depois que você poderia usar 'getElementById' para definir uma classe diferente para esconder o link específico.

O que distingue um link de outro? Se você sabe que no lado do servidor, em seguida, adicionar classnames apropriados e que será escondido, de forma estática, do CSS.

dinamicamente determinar o que precisa esconder vai exigir que você para gerar dinamicamente o snippet de javascript, a menos que você tornar este dentro do HTML.

Update:. Se você não tem acesso ao HTML gerado, em seguida, o meu post não ajudá-lo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top