Foros del Web » Programando para Internet » Javascript »

Los métodos InsertRule y ClassName no funcionan

Estas en el tema de Los métodos InsertRule y ClassName no funcionan en el foro de Javascript en Foros del Web. En primer lugar, Buenas!! Hace años que no posteo en este foro! Encantado de estar de nuevo con ustedes. Mi pregunta es simple. He planteado ...
  #1 (permalink)  
Antiguo 31/10/2010, 14:11
(Desactivado)
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 471
Antigüedad: 19 años, 6 meses
Puntos: 45
Información Los métodos InsertRule y ClassName no funcionan

En primer lugar, Buenas!! Hace años que no posteo en este foro! Encantado de estar de nuevo con ustedes.

Mi pregunta es simple. He planteado un sistema muy simple para destacar el nombre de la sección en el menú según en que sección me encuentre. Por ejemplo, si estoy en portada se destacará en el menú el texto "Portada". Para ello uso un switch que analiza la cadena recibida por location.search.

Sin embargo ni el método InsertRule funciona ni consigo asignar una clase css a una fila de la tabla mediante ClassName. He cambiado el código mil veces, aquí dejo el último simplificado. No les voy a decir los cambios que he hecho para no extender mucho el post. Lo que sí es cierto, es que probé a añadir antes de InsertRule el método deleterule() y funcionó, pero ya no me acuerdo que hice con él.

Código Javascript:
Ver original
  1. function comprobar(){
  2. url = window.location.search;
  3. version = navigator.appName;
  4. document.styleSheet[0].insertRule(".temp{background-color:white;}", 0);
  5. switch (url){
  6. case "?id=1":
  7. document.getElementById("mm").className = "temp";
  8. break;
  9. }
  10. }

mm es el id de la fila 1 correspondiente a "Portada"
El Switch no es lo que falla, he probado con otras cadenas dentro de Break y se ejecutan correctamente. Nota: Tampoco funciona si elimino la linea InsertRule y lo predefino en la hoja CSS.
  #2 (permalink)  
Antiguo 31/10/2010, 15:34
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: Los métodos InsertRule y ClassName no funcionan

fijate que styleSheet debe ser en plural. con suerte sera eso, a menos que haya sido un error al copiar el codigo.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 31/10/2010, 18:17
(Desactivado)
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 471
Antigüedad: 19 años, 6 meses
Puntos: 45
Respuesta: Los métodos InsertRule y ClassName no funcionan

Efectivamente, era eso. No se bien porqué, pero en la referencia de Dreamweaver los métodos vienen a colación con un elemento llamado "StyleSheet", hay otro que es "StyleSheets" en cuyos métodos y parámetros aparecían vacíos.

Tenía tres referencias abiertas, la del Dreamweaver, la de Javascriptkit y DeveloperMozilla y no se porqué al final acabé haciendo caso a la primera.
  #4 (permalink)  
Antiguo 01/11/2010, 05:58
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: Los métodos InsertRule y ClassName no funcionan

depende de la estructura de la referencia. para que no vuelvas a cometer el mismo error, debes leer el prologo de las referencias; o las introduciones de cada partes. en ocaciones, se explica como esta estructurado el material. por ejemplo, la referencia que constantemente consulto -javascript: the definitive guide-, tiene dos partes de referencias. en esas partes, parece ser confuso como se describen la lista de propiedades. por exponer el mismo ejemplo, en el objeto Document la propiedad styleSheets aparece asi readonly CSSStyleSheet[] styleSheets. en el caso de esta referencia, el nombre de la propiedad siempre aparece al final y el resto de las palabras que lo preceden son caracteristicas acerca de esa propiedad. en este ejemplo, indica que styleSheets es una propiedad de solo lectura (readonly) y que su interface o tipo de objeto es CSSStyleSheet. volviendo a tu caso, puede ser que sea una situacion similar.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: classname, insertrule, metodos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:40.