Estoy tratando de alternar la visibilidad de ciertos elementos DIV en un sitio web según la clase de cada DIV. Estoy usando un fragmento de JavaScript básico para alternarlos. El problema es que el script solo usa getElementById
, ya getElementByClass
que no es compatible con JavaScript. Y, desafortunadamente, tengo que usar class y no id para nombrar los DIV porque los nombres de DIV son generados dinámicamente por mi hoja de estilo XSLT usando ciertos nombres de categoría.
Sé que ciertos navegadores ahora son compatibles getElementByClass
, pero como Internet Explorer no lo hace, no quiero seguir ese camino.
Encontré scripts que usan funciones para obtener elementos por clase (como el n. ° 8 en esta página: http://www.dustindiaz.com/top-ten-javascript/ ), pero no puedo averiguar cómo integrarlos. con mi script de alternancia.
Aquí está el código HTML. Los DIV en sí mismos faltan ya que se generan al cargar la página con XML / XSLT.
Pregunta principal: ¿Cómo obtengo el siguiente script de alternancia para obtener Elemento por clase en lugar de obtener 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>
Respuestas:
Los navegadores modernos tienen soporte para
document.getElementsByClassName
. Puede ver el desglose completo de los proveedores que brindan esta funcionalidad en caniuse . Si está buscando extender el soporte a navegadores más antiguos, es posible que desee considerar un motor de selección como el que se encuentra en jQuery o un polyfill.Respuesta anterior
Querrá registrarse en jQuery , que permitirá lo siguiente:
Google ofrece un archivo de origen jQuery alojado, para que pueda hacer referencia a él y estar listo y funcionando en momentos. Incluya lo siguiente en su página:
fuente
<script>
etiquetas. JQuery alojado en Google está diseñado específicamente para sitios web de producción (como CDN). Si su sitio es https, asegúrese de utilizar la versión https para evitar advertencias de contenido mixto.<script>
inyección de etiquetas es la base de las solicitudes JSONP entre sitios.El
getElementsByClassName
método ahora es compatible de forma nativa con las versiones más recientes de Firefox, Safari, Chrome, IE y Opera, puede hacer una función para verificar si una implementación nativa está disponible; de lo contrario, use el método Dustin Diaz:Uso:
fuente
Anualmente, al usar getElementsByClassName, devuelve una matriz de varias clases. Porque el mismo nombre de clase podría usarse en más de una instancia dentro de la misma página HTML. Usamos el ID de elemento de matriz para apuntar a la clase que necesitamos, en mi caso, es la primera instancia del nombre de clase dado. Así que usé [0]
fuente
Úselo para acceder a la clase en Javascript.
fuente
agregando a la respuesta de CMS , este es un enfoque más genérico del
toggle_visibility
que acabo de usar:fuente
Mi solución:
Primero cree etiquetas "<style>" con una ID.
Luego, creo una función en JavaScript como esta:
Funcionó como un encanto para mí.
fuente
<br>
) son inútiles / inválidos dentro de una etiqueta de estiloAnexar ID en la declaración de clase
fuente