Pregunta

Tengo este html.

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

¿Cómo puedo ocultar uno de estos enlaces utilizando el atributo href y solo los últimos números (233253), para ocultar el enlace con este atributo href y la clase " enlace " ;?

Este no es un código que funcione, solo algo que armé para explicarlo mejor. getElementsByTagName ('a'). class ('link'). href = " * 233253 "

Actualización: Desafortunadamente, tiene que ser javascript puro, no usar una biblioteca, y debe funcionar en IE6.

Actualización2: No tengo acceso al html

¿Fue útil?

Solución

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

Editar : publiqué una nueva versión después de leer su comentario sobre encapsular la funcionalidad dentro de una función. Esta debería funcionar tan bien como la versión anterior.

Otros consejos

Usando jQuery:

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

El selector de atributo $ = coincide con todos los elementos donde el atributo seleccionado termina con el valor dado.

[ edit ]: el código era algo descuidado, debería funcionar ahora. Incluyendo el método de división (ver comentarios).

Recorra los elementos a, compruebe href y aplique la ocultación. Así:

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

O

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

Sin ofender, pero crear bucles me parece una solución alternativa. Si pudiera agregar identificaciones únicas a los enlaces, ese sería obviamente el método preferido.

Después de eso, puedes usar 'getElementById' para configurar una clase diferente para ocultar el enlace en particular.

¿Qué distingue un enlace de otro? Si sabe que en el lado del servidor, agregue nombres de clase apropiados y que se ocultarán, de forma estática, del CSS.

Para determinar dinámicamente las necesidades de ocultación, deberá generar dinámicamente su fragmento de código javascript, a menos que lo represente dentro del HTML.

Actualizar: Si no tienes acceso al HTML generado, mi publicación no te ayuda.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top