Foros del Web » Programando para Internet » Javascript »

Obtener indice Array

Estas en el tema de Obtener indice Array en el foro de Javascript en Foros del Web. hola, como puedo obtener el indice de una array, y no el valor. Gracias....
  #1 (permalink)  
Antiguo 26/01/2007, 10:54
 
Fecha de Ingreso: diciembre-2006
Mensajes: 381
Antigüedad: 17 años, 3 meses
Puntos: 2
Obtener indice Array

hola, como puedo obtener el indice de una array, y no el valor.
Gracias.
  #2 (permalink)  
Antiguo 26/01/2007, 11:25
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 3 meses
Puntos: 3
Re: Obtener indice Array

El indice de que campo??????

Si es el tamaño --> array.length

Si quieres encontrar un campo en concreto:
Código HTML:
var indice;
var i=0;
var enc = false;
while(i<array.length && !enc){
         if(array[i] == "VALOR DEL CAMPO QUE QUIERES ENCONTRAR"){
                  enc = true;
                  indice = i;
         }
i++;
}
no se si te servira...
  #3 (permalink)  
Antiguo 26/01/2007, 11:51
 
Fecha de Ingreso: diciembre-2006
Mensajes: 381
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: Obtener indice Array

Si creo que me puede ayudar ese script, lo que pasa es que tengo varios
<input type="text" name="articulos[]">, y al momento de pasarlos a la bd para hacer el insert, simplemente leo el array articulos con un foreach y puedo grabar, tal vez te preguntes: "por que tienen el mismo nombre?", es que forman parte de los detalles de una nota de pedido y no se cuantos detalles se van a ir agregando,
en los detalles van, el codigo, descripcion, precio, cantidad, subtotal,
y los campos codigo y cantidad, debo tenerlo en un array, para grabar los datos, tambien lo estoy haciendo de otra forma, como he preguntado en otros temas.

Simplemente quiero obtener el indice del array que correspona a la caja de texto que esta seleccionada, solo eso.

Salu2.
y Gracias.
  #4 (permalink)  
Antiguo 26/01/2007, 12:16
 
Fecha de Ingreso: enero-2007
Mensajes: 405
Antigüedad: 17 años, 3 meses
Puntos: 3
Re: Obtener indice Array

los input se crean dinamicamente?

Si es asi, puedes ponerle de nombre: name="articulos<%=i %>" (eso seria en ASP) y te iría poniendo: name1,name2,... suponiendo que i vale 1 inicialmente y se va incrementando conforme va añadiendo input.

Si lo vas a utilizar varias veces el script:
Código HTML:
function nombre(array,cadena){
var indice;
var i=0;
var enc = false;
while(i<array.length && !enc){
         if(array[i] == cadena){
                  enc = true;
                  indice = i;
         }
i++;
}

}
  #5 (permalink)  
Antiguo 26/01/2007, 13:38
 
Fecha de Ingreso: diciembre-2006
Mensajes: 381
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: Obtener indice Array

Cita:
los input se crean dinamicamente?
si, se van agregando a la tabla, con javascript.

Cita:
Si es asi, puedes ponerle de nombre: name="articulos<%=i %>" (eso seria en ASP) y te iría poniendo: name1,name2,... suponiendo que i vale 1 inicialmente y se va incrementando conforme va añadiendo input.
lo que pasa es que la pagina donde se crean los input no es ni PHP ni ASp ,es TPL, estoy trabajando separando el codigo del diseño, por eso en el diseño no podria poner las etiquetas de php ni asp, y tambien estoy usando el ajax para el valor que escribo en la caja de texto, lo envie a una pagina php, haga la consulta el valor de esa consulta lo muestre en un <div> osea si estoy logrado eso, pero me falta un poco para terminarlo.

Osea en una fila todos los elementos deben tener la misma terminacion texto, select0, div, por eso los creo dinamicamente para que sean asi:

texto[0], div[0],select[0]

y el siguiente fila sea:

texto[1], div[1],select[1]

Eso si lo esta creando bien pero lo que quiero es que me capture el indice(0,1,2,etc), para que el resultado de la busqueda lo haga en esa misma fila y no en otra.

En estos momentos los estoy intentando pero si me ayudan podre terminarlo a tiempo
  #6 (permalink)  
Antiguo 26/01/2007, 16:19
 
Fecha de Ingreso: diciembre-2006
Mensajes: 381
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: Obtener indice Array

Tal vez no me entienden yo estoy creando objectos dinamicamento con el DOM con los siguientes nombres <input type="text" name="articulo[]"> y si yo enviara el formulario con varios objectos creados asi, simplemente le haria un foreach para obtener los valores, pero yo quiero al momento de ejecutar el evento OnKeyUp llamo a una funcion que funciona con el Ajax para que haga la busqueda de ese articulo, por eso lo que quiero es obtener ese indice del input indicado, me entienden?

Pueden ayudarme?

Estoy tratando de hacerlo pero aun no me sale.
  #7 (permalink)  
Antiguo 27/01/2007, 03:38
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: Obtener indice Array

Hola StrikeFreedom

A ver si te sirve este ejemplo:

Código PHP:
<html>
<
head>
<
script type="text/javascript">
function 
buscarIndice(obj) {
  
frm obj.form;
  for (
i=0ele=frm['articulo[]'][i]; i++)
    if (
ele==obj) {
      
alert(i);
      break;
    } 
}
</script>
</head>
<body>
<form>
<input type="text" name="articulo[]" onkeyup="buscarIndice(this)">
<input type="text" name="articulo[]" onkeyup="buscarIndice(this)">
<input type="text" name="articulo[]" onkeyup="buscarIndice(this)">
</form>
</body>
</html> 
Saludos,
  #8 (permalink)  
Antiguo 27/01/2007, 08:14
 
Fecha de Ingreso: diciembre-2006
Mensajes: 381
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: Obtener indice Array

Gracias por responder, pero tengo algunas preguntas:
Código PHP:
frm obj.form
el "form" te refieres al nombre del formulario o al objeto?

Código PHP:
frm['articulo[]'][i]; 
Yo pensaba que solo a los arrays multidimensionales se les podia llamar asi, por eso yo los trataba de llamar asi 'articulo['+i+']'; creo que ese fue mi error.

Pero aun no me sale, pero seguire intentandolo hasta las 6 pm ya que en estos momentos en mi pais son las 9:22 am.
  #9 (permalink)  
Antiguo 27/01/2007, 09:49
 
Fecha de Ingreso: diciembre-2006
Mensajes: 381
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: Obtener indice Array

Código PHP:
function traerDatos(nombre)
{

var 
el;
var 
i;
var 
frm;

frm=nombre.form;

alert(frm);

for (
i=0;el=frm['arti[]'][i];i++)
{
    
    if(
el==nombre)
    {        
    
alert(i);
    break;    
    }
    
    
}
alert("paso el for");


lo ejecuto y me salen solo dos mensajes:

el del :alert(frm); me sale esto: [object]
y el del alert("paso el for").

pero el mensaje del alert(i) no lo muestra

en la pagina TPL( es que he separado el codigo del diseño) esta esto:

Código PHP:
<input name="arti[]" type="text" onKeyUp="traerDatos(this)" size="20" id="arti[]"
.

Aun sigo tratando, tengo que hacerlo si o si, sino el ingenierio me va a preguntar: "y como vas?", no se que voy a decirle.
  #10 (permalink)  
Antiguo 27/01/2007, 10:08
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: Obtener indice Array

Hola de nuevo.

Lo que ocurre es que si solo tienes un input, no tienes un array con el nombre arti[] y el código falla. Prueba poniendo más de un input y debería funcionarte.

De todas formas, creo que hay una forma más sencilla. Si estás creando los input con DOM, no te inportará añadirle una propiedad más, para luego leerla en el envento onkeyup

Código PHP:
var num=0;
function 
anadir() {
  
ele document.createElement('input');
  
ele.setAttribute('indice',num++);
  
ele.onkeypress = function() { alert(this.getAttribute('indice')) }
... 
Espero que te sirva. Saludos,
  #11 (permalink)  
Antiguo 27/01/2007, 10:18
 
Fecha de Ingreso: diciembre-2006
Mensajes: 381
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: Obtener indice Array

Ya le puse otro input y no funciona.

El input que mostre lo creo normalmente, pero a partir del segundo se crean con el DOM, cada vez que presiono la tecla enter.

Voy a tratar de hacerlo con la otra forma que mencionas.
Gracias por la ayuda.
  #12 (permalink)  
Antiguo 27/01/2007, 11:00
 
Fecha de Ingreso: diciembre-2006
Mensajes: 381
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: Obtener indice Array

parece qus si funciona, me obtiene ese indice, ahora estoy tratando de llamar el valor que escribo en ese input, pero del input seleccionado.

Si tengo mas complicaciones, avisaré.
Gracias.
  #13 (permalink)  
Antiguo 27/01/2007, 11:27
 
Fecha de Ingreso: diciembre-2006
Mensajes: 381
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: Obtener indice Array

No pueder ser, si jala los indices, pero no puedo llamar al valor de esa caja de texto
Código PHP:
function traerDatos(nombre)
{

vindice=nombre.indice;

inombre=nombre['arti[]'][vindice];

//inombre=nombre['arti['+vindice+']';
//cualquiera de las dos formas


alert(inombre);
var 
articulo=document.form1.inombre.value;
//"form1" es el nombre del formulario

alert(articulo);



esto esta en el TPL:
Código PHP:
 <input name="arti[]" type="text" onKeyUp="traerDatos(this)" size="20" id="arti[]" indice="0"
ya hice la prueba agregando mas input como

Código PHP:
 <input name="arti[]" type="text" onKeyUp="traerDatos(this)" size="20" id="arti[]" indice="1">
<
input name="arti[]" type="text" onKeyUp="traerDatos(this)" size="20" id="arti[]" indice="2"
Y aun no lo logro.
  #14 (permalink)  
Antiguo 15/02/2007, 13:41
Avatar de libiob  
Fecha de Ingreso: julio-2003
Ubicación: Lima
Mensajes: 125
Antigüedad: 20 años, 9 meses
Puntos: 1
Re: Obtener indice Array

tengo un problema similar cuando paso valores de una seleccion de checkbox para eliminar registros, cuando pongo el valor de la variable a imprimir me sale: undefinedProcess

Alguien sabe de que se trata?

PD: lo estoy pasando usando AJAX
  #15 (permalink)  
Antiguo 06/02/2009, 16:09
 
Fecha de Ingreso: julio-2008
Mensajes: 4
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Obtener indice Array

Hola, si queres obtener solo el indice es muy simple usando array_keys

Cita:
$valores = array('verde' , 'amarillo' , 'azul');
$indice = array_keys($valores,'amarillo');
echo $indice[0]; // Esto nos daría como resultado 1
Por que no le pones nombres a los campos de texto o bien un numero de indice especifico

Cita:
<input type"text" name"campo[0]">
<input type"text" name"campo[2]">

INSERT INTO... SET nombre='".$_POST["campo"][0]."' , apellido='".$_POST["campo"][1]."' "
O bien ponele el nombre especifico y listo
  #16 (permalink)  
Antiguo 06/02/2009, 16:39
 
Fecha de Ingreso: julio-2008
Mensajes: 4
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Obtener indice Array

Con los checkbox deberias hacer lo siguiente
a cada checkbox le pones de nombre por ejemplo eliminar[] y en value le pones el indice que tenga esa info en la base de datos

El codigo es muy simple

Cita:
for($i=0;$i<count($_POST['eliminar']);$i++){
mysql_query("DELETE FROM basededatos WHERE id='".$_POST['eliminar'][$i]."'",$link);
}
Saludos
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 08:17.