getElementById válido para class??
4 seguidores
Pues eso. ¿Se puede usar getElementById para acceder a atributos a etiquetas definidas con class o solo es válido para etiquetas con id?. Tambien he probado con getElementByTagName pero no me hace caso. Bueno, si que hace caso.. caso omiso. :)
un saludo
cbp
con getElementById accedes a un elemento a través de su id, que ha de ser único en todo el documento. con getElementsByTagName (con "s" después de Element) accedes a todos los elementos cuya etiqueta coincida con la que definas en la llamada, por ejemplo, a todos los enlaces
document.getElementsByTagName('a')
¿todos los elementos a los que deseas acceder para comprobar el class son del mismo tipo? si es así puedes probar con
document.getElementsByTagName('etiqueta').className
gandalias
mmm...
Bueno. Me vale con lo getElementsByTagName (creo). Se me olvidó la "s".
muchas gracias!!!
gandalias
si si
Son todos del mismo tipo...
y además un tr... para que me deis capones :) :) :) ¿por que para un tr tambien vale el getElementByTagName no?
cbp
pues sí, claro que sirve, y así de entrada no te vamos a dar ningún capón, todo depende de para lo que hayas usado las tablas :P
gandalias
Lo del table es como poner un cigarro encendido en los morros a uno que quiere dejar de fumar...
Josh
en el offf meddle hablo de una funcion que se ha creado el sobrecargando el document llamada getElementsByClassName
meddle
ei Josh, que tal tio? luego no te vi, me hubiera gustado hablar mas contigo.
la funcion no la creé yo, la adapté de Dan Pupius (de hecho tengo q retocarla pq no funciona en IE5.0), pero funciones de estas hay unas cuantas por la red. Lo que uso ahora mismo es esto:
<code>function getElementsByClass (className,node) {
if(!node) node=document;
var refTags = node.getElementsByTagName("*") ? node.getElementsByTagName("*") : document.all;
var retVal = new Array();
for(var i=0;i<refTags.length;i++) {
if(refTags[i].className == className)
retVal.push(refTags[i]);
}
return retVal;
}
if(!Array.prototype.push)
{
Array.prototype.push = function()
{
var i;
for(i=0; j=arguments[i]; i++) this[this.length] = j;
return this.length;
}
}</code>
Como digo por la red hay unas cuantas, todo depende del grado de flexibilidad que necesiteis:
moonclaf
simon
liorean
gazingus
etc etc. Lo mas facil de todos modos seria pillar todos los elementos de una pagina y comprobar si className == a lo que buscamos. Claro que no todos los navegadores aceptan el getElementsByTagName("*"), aunque se pueden hacer apaños mas o menos decentes.
Suerte
Josh
Hola meddle. La verdad es que solo fui el primer día. Eso de que sea el offf en la misma ciudad donde trabajas es contraproducente XD
no sabia lo de usar * en getElementsByTagName :)
meddle
Josh
no sabia lo de usar * en getElementsByTagName :)
pero a safari no le mola, por eso debes usar un boolean y tener el document.all como alternativa :)
a ver si la proxima nos vemos mas rato
cbp
[offtopic]
meddle, tengo alguna duda. he visto el código de la página de Zigotica y usas la pseudo-clase :after para añadir la separación entre opciones del menú, y una clase "last" para el último elemento de la misma ¿por qué no usar el "last-child"? ¿y por qué dejar a los usuarios de IE sin esa separación?
dudillas de cotilla que soy :P
[/offtopic]
meddle
jaja, si, es una putadita que IE no pille bien los selectores. estoy hasta los huevos del IE ;)
¿por qué no usar el "last-child"?
sinceramente o no lo habia pensado o no lo recuerdo, pero gracias. dejame mirarlo a ver si chuta.
¿y por qué dejar a los usuarios de IE sin esa separación?
por cuestiones puramente metodo-filosoficas, aunque igual me lo pienso :)
por cierto, entre hoy y mañana lanzo zigotica de una vez, solo estoy pendiente de que me activen el soporte true type en el server para hacer titulos al vuelo ;)
meddle
de hecho, ahora no se me ocurre la manera, pero a bote pronto si uso esto:
<code>li:after {
content: "| ";
}
ul:last-child:after {
content: ".";
}
</code>para el ultimo li tendre |. (y eso queda maaal) ;)
en cambio si uso una clase sobreescribe el li:after anterior.
cbp
yo también estoy un poco harto de todas las posibilidades del CSS2 que se pierden por culpa del IE, y estoy pensando empezar a desarrollar mis proyectos personales pasando del culo de Billy y poner un aviso al principio diciendo que si entran con un navegador decente verán la página bien, pero que si usan la mierda habitual no me hago responsable de lo que vean, que la culpa es de los programadores ineptos de Mocosoft.
¿eso del soporte true type cómo va? ¿es para usar fuentes que no estén instaladas en el cliente? cuenta, cuenta, arrrrrrrrrrr :P
cbp
¿y poniendo...?
<code>ul *:after {
content: "| ";
}
ul:last-child:after {
content: ".";
}
</code>
¿entrarían en conflicto las dos declaraciones y prevalecería la segunda en la última opción de menú?
meddle
cbp
¿eso del soporte true type cómo va? ¿es para usar fuentes que no estén instaladas en el cliente? cuenta, cuenta, arrrrrrrrrrr :P
correcto. por ejemplo, para crear una imagen con una fuente que tengas instalada en el server (en un directorio que tu quieras), puedes hacer algo del tipo:
<code><?php
header ("Content-type: image/png");
$im = imagecreate (400, 30);
$black = imagecolorallocate ($im, 0, 0, 0);
$white = imagecolorallocate ($im, 255, 255, 255);
imagettftext ($im, 20, 0, 10, 20, -$white, "/usr/share/fonts/hoog0553.ttf", "Hola que tal");
imagepng ($im);
imagedestroy ($im);
exit;
?></code>y en el html llamas directamente al archivo php en lugar de la imagen :)
meddle
cbp
¿y poniendo...?
<code>ul *:after {
content: "| ";
}
ul:last-child:after {
content: ".";
}
</code>
¿entrarían en conflicto las dos declaraciones y prevalecería la segunda en la última opción de menú?
eso tampoc ova, añade | y . en el ultimo
cbp
meddle
correcto. por ejemplo, para crear una imagen con una fuente que tengas instalada en el server (en un directorio que tu quieras), puedes hacer algo del tipo:
<code><?php
header ("Content-type: image/png");
$im = imagecreate (400, 30);
$black = imagecolorallocate ($im, 0, 0, 0);
$white = imagecolorallocate ($im, 255, 255, 255);
imagettftext ($im, 20, 0, 10, 20, -$white, "/usr/share/fonts/hoog0553.ttf", "Hola que tal");
imagepng ($im);
imagedestroy ($im);
exit;
?></code>y en el html llamas directamente al archivo php en lugar de la imagen :)
[modo niño repelente que hace demasiadas preguntas on]
mooooooooooooooooola :D ¿y todos los servidores tienen ese soporte o es difícil de encontrar?
cbp
¿y si añades un border a todos los elementos en lugar de un carácter "|" y en el último lo pones a 0px usando el last-child?
<code>
ul li {
border: 1px solid #a0aea1;
}
ul li:last-child {
border: 0px;
}
</code>
meddle
lo del truetype no todos los servers lo tienen, yo lo he pedido hoy y aun no me han contestado, veremos.
lo otro lo pruebo mas tarde, pero parece buena opcion, gracias por la idea ;)
cbp
de nada, creo que fuiste tú el que me lo dijiste una vez hace tiempo así que te lo devuelvo :P