Foros del Web » Programando para Internet » Javascript »

Duda getElementById

Estas en el tema de Duda getElementById en el foro de Javascript en Foros del Web. Tengo dudas con el funcionamiento del getElementById he estado mirando y probando y no estoy seguro. Quiero mediante un boton pasar el valor del campo ...
  #1 (permalink)  
Antiguo 23/03/2010, 12:35
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 9 meses
Puntos: 0
Duda getElementById

Tengo dudas con el funcionamiento del getElementById he estado mirando y probando y no estoy seguro.
Quiero mediante un boton pasar el valor del campo de un formulario hacia otra pagina pero no me manda la variable vacia.

Código HTML:
Ver original
  1. <form name="frm" action="php/cambio.php" method="POST" onSubmit="return confirm('Estas seguro ?')">
  2.  
  3.  <li><label>Nueva Parcela:</label>
  4.               <input type="text" size="3" maxlength="3"name="id" id="id" />
  5.          </li>
  6.          <li><label>Nuevos m2:</label>
  7.               <select size="1" name="m2">
  8.                 <option selected value="40">40</option>
  9.                 <option value="50">50</option>
  10.                 <option value="65">65</option>
  11.                 <option value="75">75</option>
  12.             </select>
  13.        </li>
  14.  
  15.  <input name="submit" type="submit" class="btn" value="Modificar" />
  16.          
  17.       <script type="text/JavaScript">
  18.            n = document.getElementById('id').value;
  19.           </script>
  20.  
  21. <button type="button"  onClick="location.href = 'php/eliminar.php?id=n'" >Eliminar </button>
  22.  
  23.  
  24. </form>
  #2 (permalink)  
Antiguo 23/03/2010, 13:02
 
Fecha de Ingreso: marzo-2010
Mensajes: 432
Antigüedad: 14 años, 9 meses
Puntos: 11
Respuesta: Duda getElementById

basicamente asi funciona:

Código HTML:
Ver original
  1. <p id="micodigo"> Gsdfsfsdfsf </p>

Código Javascript:
Ver original
  1. <script type="application/javascript;version=1.8">
  2.  
  3.     var = getElementById("micodigo");
  4.     document.write(var);
  5.  
  6. </script>
  #3 (permalink)  
Antiguo 23/03/2010, 14:03
Avatar de bng5  
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 15 años, 6 meses
Puntos: 24
Respuesta: Duda getElementById

Asumo que la respuesta de tazzwt fue offtopic, porque no entendí a que se refiere.

Existen varios problemas en el código. Estás utilizando javaScript de forma obstructiva. El botón 'Eliminar' no hará el submit del formulario sin javaScript y al ser un simple botón no llamara al 'onsubmit' del formulario.

Ahora que lo veo bien, no tiene sentido el formulario si al final hacés una consulta GET ignorandolo completamente.

La respuesta puntual a tu consulta es:
1_ cargás en la variable n el valor del input en un momento específico, pero n no actualiza su valor cuando cambia el texto en el input.

2_ Al location.href le pasás un literal n y no la variable n.
Código:
location.href= 'php/eliminar.php?id=n';
location.href= 'php/eliminar.php?id='+n;
  #4 (permalink)  
Antiguo 24/03/2010, 06:12
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Duda getElementById

bng5 yo lo que intento hacer es un formulario que en el submit me vaya a la pagina cambios que es lo que hace y ademas que haya un boton para que me elimine la parcela, por eso he hecho el boton con Javascript porque no se me ocurre otra forma.
Con los datos de un formulario no puedo ir a dos paginas diferentes.

Ahora me pasa lo que me comentas que no se recarga el dato del formulario y no actualiza el valor de n. Como podria hacer para que se recargase el valor y si hay otra forma de hacer lo del formulario que no sea como la que hago yo.

Gracias por contestar

PD: El formulario tiene mas campos pero para no ponerlo todo he puesto solo el que me interesa que es el identificador
  #5 (permalink)  
Antiguo 24/03/2010, 11:29
Avatar de bng5  
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 15 años, 6 meses
Puntos: 24
Respuesta: Duda getElementById

Tenés razón, no había visto el submit de arriba.

Cita:
Iniciado por jawir Ver Mensaje
Con los datos de un formulario no puedo ir a dos paginas diferentes.
Si se puede, cambías el action del formulario según el botón accionado y llamás al metodo submit().

Cita:
Iniciado por jawir Ver Mensaje
Ahora me pasa lo que me comentas que no se recarga el dato del formulario y no actualiza el valor de n.
No me gusta esta rutina, pero así debería funcionar.

Código HTML:
<script type="text/JavaScript">

function eliminar() {
  var n = document.getElementById('id').value;
  document.location.href = 'php/eliminar.php?id='+n;
}

</script>
...
<button type="button"  onclick="eliminar()" >Eliminar </button> 
  #6 (permalink)  
Antiguo 25/03/2010, 06:52
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Duda getElementById

Gracias bng5 la solucion que me has dado funciona bien pero por lo que veo no esta muy bien implementado, me podias comentar como se haria como me comentas al principio cambiando el action del formulario segun el boton pulsado que supongo que sera una mejor solucion no?
  #7 (permalink)  
Antiguo 25/03/2010, 13:42
Avatar de bng5  
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 15 años, 6 meses
Puntos: 24
Respuesta: Duda getElementById

Te hago un par de sugerencias, algunas pueden sonar triviales, vos ves que te sirve y que no.

Primero que nada tengo por norma nunca realizar peticiones que efectuen cambios en servidor vía GET, o sea efectuar altas, bajas y modificaciones siempre vía POST (y si es posible y según el caso también PUT). Si se trata de un resultado de búsqueda uso GET, ya que su finalidad es entregar datos al cliente e incluso lo puede guardar en un bookmark.

Yo fusionaría los 2 archivos php (eliminar.php y cambio.php) y mandaría todas las acciones al mismo y dentro del php discriminar de que acción se trata.

De esta manera tenés la funcionalidad sin javaScript (tiene dos submit):

Origen
Código HTML:
<form name="frm" action="php/cambio.php" method="post">
 <ul>
  <li>
   <label>Nueva Parcela:</label>
   <input type="text" size="3" maxlength="3"name="id" id="id" />
  </li>
  <li>
   <label>Nuevos m2:</label>
   <select size="1" name="m2">
    <option selected="selected" value="40">40</option>
    <option value="50">50</option>
    <option value="65">65</option>
    <option value="75">75</option>
   </select>
  </li>
  <li>
   <input name="modificar" type="submit" class="btn" value="Modificar" />
   <input name="eliminar" type="submit" class="btn" value="Eliminar" />
  </li>
 </ul>
</form> 
Destino
Código PHP:
<?php

if(isset($_POST['eliminar']))
 {
  
// uso el valor de $_POST['id'] para eliminar e ignoro todos los demás
 
}
elseif(isset(
$_POST['modificar']))
 {
  
// acá va el código para la modificación
 
}

?>
Hasta acá la parte funcional

------------------------------------------------------------------------------------------------------------------

Ahora entra javaScript.

Código HTML:
<form name="frm" action="php/cambio.php" method="post" onsubmit="return confirmacion(this)"> 
De esta manera podés usar la confirmación para ambas acciones

Código:
<script type="text/javascript">
/* <![CDATA[ */

function confirmacion(formulario) {

  // si acción es modificar pregunto si quiere modificar, de lo contrario pregunto si quiere borrar
  var textoConfirmacion = (accion == 'modificar') ? '¿Desea modificar...?' : '¿Desea eliminar...?';
  var confirmado = confirm(textoConfirmacion);
  if(confirmado) {
    // si el usuario confirma: le concateno a la ruta del action del formulario el parametro GET 'confirmado'
    formulario.action += '?confirmado=1';
  }
  return confirmado;
}

/* ]]> */
</script>

Creo la variable global 'accion' y le asigno el valor de name del botón seleccionado.
Código HTML:
 <input name="modificar" type="submit" class="btn" onclick="cambiarAccion(this)" value="Modificar" />
   <input name="eliminar" type="submit" class="btn" onclick="cambiarAccion(this)" value="Eliminar" /> 
Código:
<script type="text/javascript">
/* <![CDATA[ */

var accion;

function cambiarAccion(boton) {
  accion = boton.name;
}

/* ]]> */
</script>
Volviendo al PHP, si no se recibe el parámetro 'confirmado' es porque seguramente se hizo el submit sin javaScript y el usuario no vió la pregunta de confirmación.
(Ya se que es duplicar código)

Código PHP:
<?php

if(!isset($_GET['confirmado']))
 {
  
// muestro al usuario la confirmación, esta vez en HTML
 
}

?>

Como te decía: son sólo un par de sugerencias no muy desarrolladas.
  #8 (permalink)  
Antiguo 26/03/2010, 12:09
 
Fecha de Ingreso: marzo-2009
Mensajes: 221
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Duda getElementById

Muchas gracias por darme otra variante mas adecuada, lo que no acabo de ver es la ultima parte
Código PHP:
Ver original
  1. <?php
  2.  
  3. if(!isset($_GET['confirmado']))
  4.  {
  5.   // muestro al usuario la confirmación, esta vez en HTML
  6.  }
  7.  
  8. ?>
El usuario siempre vera la pregunta de confirmacion, en que caso no la vera?
  #9 (permalink)  
Antiguo 26/03/2010, 12:12
Avatar de bng5  
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 15 años, 6 meses
Puntos: 24
Respuesta: Duda getElementById

En el caso de que javaScript se haya trancado por algún error o que el usuario no lo tenga habilitado. Pero como te decía: son solo unos consejos, no es nada que haya pensado 2 veces.

Etiquetas: getelementbyid
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 04:00.