Foros del Web » Programando para Internet » Javascript »

Elemento "this". ¿Qué es?

Estas en el tema de Elemento "this". ¿Qué es? en el foro de Javascript en Foros del Web. Hola foreros/as! He buscado información sobre este tema pero no he encontrado nada. Tampoco en los hilos de este foro. Realmente no tengo claro que ...
  #1 (permalink)  
Antiguo 27/03/2006, 09:30
 
Fecha de Ingreso: marzo-2006
Mensajes: 4
Antigüedad: 18 años, 1 mes
Puntos: 0
Elemento "this". ¿Qué es?

Hola foreros/as!

He buscado información sobre este tema pero no he encontrado nada. Tampoco en los hilos de este foro.

Realmente no tengo claro que es el elemento this. Me explico:

Yo tengo un html y un js tal que así:

prueba.HTML
<html>
<head>
<SCRIPT LANGUAGE="JavaScript" SRC="form1.js"></SCRIPT>
<center><b>FORMULARIO PARA VALIDACIÓN DE DATOS</b></center><p>
</head>

<form name="form1" method="post">

<b>CUENTA DE CORREO:</b><p>

Correo E: <input type="text9" name="9" id="9" onBlur="validar_datos(this);"><p>

<input type="submit" value="Validar datos"><p><p>

</form>

</html>

form1.js
function validar_datos(campo_form)
{
if (campo_form.value.indexOf('@', 0) == -1 || campo_form.value.indexOf('.', 0) == -1)
{
alert("Dirección de e-mail con formato inválido");
campo_form.focus();
return false;
}
return true;
}


Esto funciona correctamente. El problema es cuando pongo un js intermedio entre prueba.html y form1.js. Como no sé qué es "this" no sé que pasarle desde HTML a la función. Ejemplo:


prueba.HTML
<html>
<head>
<SCRIPT LANGUAGE="JavaScript" SRC="form1.js"></SCRIPT>
<center><b>FORMULARIO PARA VALIDACIÓN DE DATOS</b></center><p>
</head>

<form name="form1" method="post" onSubmit="validar_datos(this);>

<b>CUENTA DE CORREO:</b><p>

Correo E: <input type="text9" name="9" id="9"><p>

<input type="submit" value="Validar datos"><p><p>

</form>

</html>

form1.js

document.write("<script type='text/javascript' src='js.js'></script>");

function validar_datos(campo)
{
comprobar_correo(campo);
}

js.js
function comprobar_correo(campo_form)
{
if (campo_form.value.indexOf('@', 0) == -1 || campo_form.value.indexOf('.', 0) == -1)
{
alert("Dirección de e-mail con formato inválido");
campo_form.focus();
return false;
}
return true;
}


Obviamente, en la línea<form name="form1" method="post" onSubmit="validar_datos(this);>, en el this le paso un argumento en blanco mientras que si se lo paso cuando activo un evento en el objeto (como en el primer caso) todo sin problemas.

Alguna sugerencia? Ya casi casi lo tengo pero estoy muy perdido.

Muchas gracias.
  #2 (permalink)  
Antiguo 28/03/2006, 02:05
 
Fecha de Ingreso: diciembre-2004
Mensajes: 272
Antigüedad: 19 años, 4 meses
Puntos: 4
Saludos:

mira,this es un objeto, el cual es el objeto actual donde se utiliza, en esta parte:

Cita:
<input type="text9" name="9" id="9" onBlur="validar_datos(this);">
hace referencia al objeto campo de texto "text9" que es donde esta(es como si dijeras: a esta funcion mandale "este(this)" objeto), y sirve igual que si pusieras:

validar_datos(document.form1.text9)

y en la funcion lo utilizas

campo_form.focus();

que es como si pusieras:

document.form1.text9.focus();


En cambio de la segunda forma no funciona

Cita:
<form name="form1" method="post" onSubmit="validar_datos(this);>
porque estas pasando como objeto el formulario completo es decir estas pasando esto:

validar_datos(document.form1)


y cuando lo usas en la funcion logicamente tampoco funciona porque es como si estuvieras haciendo esto:


document.form1.focus();

cuando relamente quieres hacer esto:

document.form1.text9.focus();

para que te funcionara asi como lo tienes, dentro de tu funcion tendrias que posponer el nombre del campo de texto, y te quedaria:


campo_form.text9.focus();



Bueno, espero haberme explicado, si no, aqui espero tus comentarios o dudas.

Hasta luego...
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 06:31.