Foros del Web » Programando para Internet » Javascript »

getDocumentById dos veces??

Estas en el tema de getDocumentById dos veces?? en el foro de Javascript en Foros del Web. Hola, gente: A ver, estoy intentando capturar el estilo css de un botón que está dentro de un form, y aplicarle el estilo contenido en ...
  #1 (permalink)  
Antiguo 04/02/2010, 16:37
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 4 meses
Puntos: 4
getDocumentById dos veces??

Hola, gente:

A ver, estoy intentando capturar el estilo css de un botón que está dentro de un form, y aplicarle el estilo contenido en una variable, tal que así:

Código Javascript:
Ver original
  1. var ancho=screen.width;
  2. var aleat=Math.round(Math.random()*(ancho-1))+1;
  3. document.getElementById('juego').getElementById('parar').style.marginLeft=aleat;

Y aquí el html:
Código HTML:
<div id="juego" name="n_juego">
 		<input type="button" id="parar" name="parar" value="Rápido, púlsame!!" onClick="parar();"> 
Con esto, pretendo colocar un botón en un punto aleatorio del eje X de la pantalla, que, al ser pulsado, llame a otra función ( parar() ).

Mi pregunta es si puedo usar dos veces en la misma línea getdocumentbyid, ya que, de momento, no me hace nada, y, en caso de no poder, cómo puedo acceder a ese botón.

Gracias!
  #2 (permalink)  
Antiguo 04/02/2010, 16:51
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
Puntos: 1485
Respuesta: getDocumentById dos veces??

en una expresion no puedes usarlo mas de dos veces. mas bien porque la funcion devuelve en elemento y dicho elemento no hereda la funcion getElementById. getElementById es una funcion exclusiva del objeto document. aparte, no hace sentido. ¿por que primero obtener la referencia del elemento #juego y luego tomar la de #parar pudiendo tomar directamente #parar?
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 04/02/2010, 17:02
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: getDocumentById dos veces??

Entonces... puedo acceder directamente al botón sin recorrer la jerarquía entera del DOM de esta forma?:

Código Javascript:
Ver original
  1. getdocumentbyid('parar').style.marginLeft=aleat;

Aunque, igualmente, lo acabo de probar, y el botón sigue apareciendo en el mismo sitio que antes, pegado al margen izquierdo de la pantalla. ¿Cómo puedo hacer que aparezca aleatoriamente en un punto del eje horizontal?

Muchas gracias por tu respuesta
  #4 (permalink)  
Antiguo 04/02/2010, 17:19
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
Puntos: 1485
Respuesta: getDocumentById dos veces??

recuerda que estas modificando una propiedad css. en css la mayoria de los valores numericos requieren unidades asi como pixeles, pulgadas, centimetros, etc. en tu caso no le estas asignando ninguno. cuando asignes el valor concatena la variable con la unidad que deseas emplear. por ejemplo, aleat + "px";. por otro lado y espero que sea simple despiste, fijate que en el ultimo codigo has escrito getdocumentbyid. no existe tal funcion, deberia ser document.getElementById. tambien debes mostrar atencion a las mayusculas y minusculas ya que javascript son sensible a ellas.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 04/02/2010, 17:32
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: getDocumentById dos veces??

UPS, bueno, aquí sí fue un fallo (porque llevo toda la tarde escribiendo la misma expresión de todas las formas posibles, y lo escribí a mano en vez de copiar), igual que me ha pasado en el título, que me acabo de dar cuenta, pero el código lo tengo bien, con getElementById.

He probado a concatenar con la unidad 'px' y 'em', y tampoco, sigue apareciéndome pegado al margen izquierdo. La cosa es que conseguí hacerlo con jQuery, pero es una práctica, y no me dejan usarlo, y con solo JS no consigo que me salga.
  #6 (permalink)  
Antiguo 04/02/2010, 17:40
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
Puntos: 1485
Respuesta: getDocumentById dos veces??

jeje, no me habia fijado del titulo! ¿que te puedo decir? no creo que ahi es donde tengas tu problema. acabo de hacer un ejemplo y me funciona. fijate que en cada carga me posiciona el boton en diferentes distancia.
Código:
<div id="juego" name="n_juego">
 		<input type="button" id="parar" name="parar" value="Rápido, púlsame!!" onClick="parar();">
</div>
<script>
var ancho=screen.width;
var aleat=Math.round(Math.random()*(ancho-1))+1;
document.getElementById('parar').style.marginLeft=aleat+"px";
</script>
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 05/02/2010, 08:14
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: getDocumentById dos veces??

Vaya! He probado este que has hecho tú y sí me anda bien =)

Muchas gracias, zerokilled.

Etiquetas: dos
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 16:32.