Esconder um link com uma classe específica e atributo
-
03-07-2019 - |
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
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