Estou tentando alternar a visibilidade de certos elementos DIV em um site, dependendo da classe de cada DIV. Estou usando um snippet de JavaScript básico para alterná-los. O problema é que o script só usa getElementById
, pois getElementByClass
não é compatível com JavaScript. E, infelizmente, tenho que usar class e não id para nomear os DIVs porque os nomes dos DIVs são gerados dinamicamente por minha folha de estilo XSLT usando certos nomes de categorias.
Eu sei que alguns navegadores agora oferecem suporte getElementByClass
, mas como o Internet Explorer não, não quero seguir esse caminho.
Encontrei scripts usando funções para obter elementos por classe (como o nº 8 nesta página: http://www.dustindiaz.com/top-ten-javascript/ ), mas não consigo descobrir como integrá-los com o meu script de alternância.
Aqui está o código HTML. Os próprios DIVs estão ausentes, pois são gerados no carregamento da página com XML / XSLT.
Pergunta principal: Como faço para obter o script de alternância abaixo para obter Elemento por classe em vez de obter Elemento por ID?
<html>
<head>
<!--This is the TOGGLE script-->
<script type="text/javascript">
<!--
function toggle_visibility(id) {
var e = document.getElementById(id);
if(e.style.display == 'block')
e.style.display = 'none';
else
e.style.display = 'block';
}
//-->
</script>
</head>
<!--the XML/XSLT page contents will be loaded here, with DIVs named by Class separating dozens of li's-->
<a href="#" onclick="toggle_visibility('class1');">Click here to toggle visibility of class 1 objects</a>
<a href="#" onclick="toggle_visibility('class2');">Click here to toggle visibility of class 2 objects</a>
</body>
</html>
Respostas:
Os navegadores modernos têm suporte para
document.getElementsByClassName
. Você pode ver a análise completa de quais fornecedores oferecem essa funcionalidade em caniuse . Se você deseja estender o suporte a navegadores mais antigos, pode considerar um mecanismo de seleção como o encontrado em jQuery ou polyfill.Resposta mais antiga
Você vai querer verificar o jQuery , o que permitirá o seguinte:
O Google oferece um arquivo-fonte jQuery hospedado, para que você possa consultá-lo e estar em funcionamento em instantes. Inclua o seguinte em sua página:
fonte
<script>
tags. O jQuery hospedado pelo Google é projetado especificamente para sites de produção (como um CDN). Se o seu site for https, certifique-se de usar a versão https para evitar o aviso de conteúdo misto.<script>
injeção de tag é a base das solicitações JSONP entre sites.O
getElementsByClassName
método agora é nativamente suportado pelas versões mais recentes do Firefox, Safari, Chrome, IE e Opera, você pode fazer uma função para verificar se uma implementação nativa está disponível, caso contrário, use o método Dustin Diaz:Uso:
fonte
Realmente, usando getElementsByClassName, ele retorna uma matriz de várias classes. Porque o mesmo nome de classe pode ser usado em mais de uma instância dentro da mesma página HTML. Usamos o id do elemento da matriz para direcionar a classe de que precisamos, no meu caso, é a primeira instância do nome de classe fornecido. Portanto, usei [0]
fonte
Use-o para acessar a classe em Javascript.
fonte
acrescentando à resposta do CMS , esta é uma abordagem mais genérica
toggle_visibility
que acabei de usar:fonte
Minha solução:
Primeiro crie tags "<style>" com um ID.
Então, crio uma função em JavaScript como esta:
Caiu como uma luva para mim.
fonte
<br>
) são inúteis / inválidas em uma tag de estiloAnexar IDs na declaração da classe
fonte