image
Inicio » Foros » JavaScript

JavaScript

concatenar valores

Volver al foro | Responder | Añadir nuevo tema


De: Rickynet
Fecha: 25/06/2005
Mensaje:

estoy haciendo una funcion que verifique campos de unos checkbox

es asi campo1 campo2 campo3 campo4

inicialmente campo 1 esta hbailitado y los otros estan disabled tengo una funciono que toma el valor del campo, en este caso si se llama a valiadar(campo1) desglosa el valor y suma uno y deberia generar campo2 (esto no se como) para asi tener campo2.disables=false

como puedo concatenar todos los valores y hacerlo este una variable

 




Quizás le interese
De: jbosch(vosk)
Util para: 9 personas

Fecha: 25/06/2005
Mensaje:

hay varias formasde hacerlo: una es creando los nombres de los objetos y otra es aprovechando las listas de objetos que se crea el navegador. para el segundo caso puedes acceder a cada elemento de la siguente foma:

document.forms[indice_formulario][indice_elemento]

esto crea u puntero al elemento, de forma que puedes validar un rango de elementos de forma facil con algo así:

for(var q=p;q<=u;q++)
 {
 var campo=document.forms[f][q];
 campo.checked="true";
 }

donde 'p' el el primer elemento, 'u' es el último y 'f' es el índice del formulario. otra variante de lo mismo para no preocuparte por el indice del formulario esla siguiente:

for(var q=p;q<=u;q++)
 {
 var campo=f[q];
 }

donde la llamada se hace desde dentro de un formulario y tiene la siguiente forma:

validar(this.form,0,2);

los parametros pasados son: un puntero al formulario (usado en la funcion como 'f'), el elemento inicial y el final.

hasta aquí han sido las formas crossbrowser; luego hay otra forma 'actual' de hacer algo parecido y es tal como has preguntado: creando los nombres de forma dinamica. para hacerlo debes usar una nomenclatura igual para todos los casos; para el ejemplo usaré la que has colgado: 'campo'+indice, de forma que la creacion de los nombres para cada campo será de la forma:

for(var q=p;q<=u;q++)
 {
 var n="campo"+q;
 }

igual que antes 'p' es el indice del primer elemento y 'u' el del último. luego los punteros a los campos se hacen tal como:

var pc=document.getElementById(n);

si lo que quieres es trabajar con una cadena para separar el indice e incrementarlo para crear el nombre del siguiente elemento puedes hacerlo de la siguiente forma:

var b="campo";
var lt=b.length;
var ind=nombre.substr(5);
ind++;
nombre="campo"+ind;

donde 'b' es el texto base de los nombres de los campos con los que quieres trabajar, 'lt' esla longitud del texto a 'filtrar' (en este caso es la longitud de 'campo', 5 caracteres). el 'nombre' es el nombre del primer campo (por ejemplo 'campo0'); luego 'ind' es el índice de ese campo y se coge como el texto restante a partir dela longitud del texto a filtrar, después se incrementa (observa que javascript transforma automaticamente el indice que inicialmente está como texto a entero); al final se concatena con el operador '+' (observa aquí también como javascript transforma automaticamente el entero a texto). ahora la var 'nombre' ya contiene el nombre del siguiente elemento. en mi opinion, esta forma de hacerlo me parece poco adecuada.

un ejemplo de todos los casos:

<html><head><script language="JavaScript">
function cc(f,p,u)
{
for(var q=p;q<=u;q++)
 {
 var c=document.forms[f][q];
 if(c.checked) {alert("El campo "+q+" está selecionado.");}
 else {alert("El campo "+q+" no está selecionado.");}
 }
}
function st(f,p,u,op)
{
for(var q=p;q<=u;q++)
 {
 var c=f[q];
 c.checked=op;
 }
}
function ivs(c)
{
var l="campo".length;
while(document.getElementById(c))
 {
 if(document.getElementById(c).checked) {document.getElementById(c).checked=false;}
 else {document.getElementById(c).checked=true;}
 var ind=c.substr(l);
 ind++;
 c=c.substring(0,l)+ind;
 }
}
</script></head><body><form name="a"></form><form name="b">
<input type="checkbox" id="campo0" name="campo0" checked>Campo 1<br>
<input type="checkbox" id="campo1" name="campo1">Campo 2<br>
<input type="checkbox" id="campo2" name="campo2">Campo 3<br><br>

<input type="button" name="c" value="Comprobar" onClick="cc(1,0,2);">
<input type="button" name="d" value="Seleccionar todos" onClick="st(this.form,0,2,true);">
<input type="button" name="e" value="Deseleccionar todos" onClick="st(this.form,0,2,false);">
<input type="button" name="f" value="Invertir seleccion" onClick="ivs('campo0');">
</form></body></html>

observa la relacion que hay entre el primer parametro de la llamada a la primera funcion, el numero de formularios que hay y el indice del formulario con el que quiero trabajar.

prueba a hacerlo sin copiar/pegar, que es mas fácil de lo que parece.

jbosch(vosk)





De: asdfasdf
Util para: 0 personas

Fecha: 18/02/2009
Mensaje:

prueba sadfasfda



Volver al foro | Responder | Añadir nuevo tema

Quizás le interese:

WebEstilo.com no se hace responsable de las opiniones que los usuarios puedan verter en cualquiera de los foros existentes.

Si te solucionó el problema pulsa en G+1


Gracias!






Comparte



Última modificación:05 de Agosto de 2012. Spain - España.
© 1998-2004 por . Todos los derechos reservados.