Ver Mensaje Individual
  #15 (permalink)  
Antiguo 02/01/2009, 23:13
Avatar de sweetlydark
sweetlydark
 
Fecha de Ingreso: septiembre-2008
Mensajes: 391
Antigüedad: 16 años, 5 meses
Puntos: 10
Respuesta: Problema con createElement(tag)

No se como lo solucionaste pero para aquellos que lleguen aquí en este:

Cita:
Iniciado por starmark Ver Mensaje
Hola amigos un problemita a mi entender bien raro ..
Estoy creando un elemento TR dentro de un TBODY de la siguiente manera ..

Usando prototype ..
Código:
var table = $('mi_tabla');
var tbody = document.createElement('tbody');
var tr = document.createElement('tr');
tr.id = "tr_name";        // Le asigno un ID

tbody.appendChild(tr);

tr.innerHTML = "<td>Ejemplo de createElement </td>";
Y me lo crea perfectamente ..

pero creo otra funcion para eliminar el TR en caso que exista, y me dice que
no existe y aqui mi problema =S .. la funcion es algo asi;


Código:
function borrar ()  {
     if ($('tr_name')) {
        tbody.removeChild($('tr_name'));
    }
         else {
               alert ('No existe el tag');
          }
}
Siempre me devuelve que no existe =S ::..

Sin embargo en el primer trozo de codigo que apunte si en la linea siguiente
luego de asignarle el ID hago un alert, que quede asi;

Código:
var table = $('mi_tabla');
var tbody = document.createElement('tbody');
var tr = document.createElement('tr');
tr.id = "tr_name";        // Le asigno un ID
alert ($('tr_name').tagName);

tbody.appendChild(tr);

tr.innerHTML = "<td>Ejemplo de createElement </td>";
Me devuelve TR :.. No entiendo =S .. Espero me puedan ayudar ..

Y una cosa curiosa .. en el navegador IE, Firefox que son los que uso ,
Pulso sobre ver codigo fuente .. Y el TR que creo nom aparece .. Eso es normal ?

Espero este en el foro correcto .. Saludos
Necesitas apegar a tbody al documento antes de poder encontrar al tr por su id. Aquí usarías esto:

table.appendChild(tbody);


En este segundo:

Cita:
Iniciado por starmark Ver Mensaje
mira .. lo pondre de una forma resumida
Yo tngo mi form por ejemplo con el campo nombre en
su tabla; de la siguiente forma;

Código:
<form name="form_contact" id="form_contact">
   <table id="table_submit" width="100%" height="1" cellpadding="0" cellspacing="0" border="0">
          <tbody id="tbody_contact_submit">
          	<tr id="tr_name">
                    <td valign="top" width="76%">
                             <input onchange="validar('uname','tr_name')" type="text"  id="uname"/>
                    </td>
                </tr>
          </tbody>
  </table>
</form>
Una cosa, el Tr que contiene el input le asigno un ID que le paso a la funcion
validar por parametros para insertar el TR que mostrara el error encima de el;
y la funcion validar seria;


Código javascript:
Ver original
  1. function validar (id,tr_error_id) {
  2.    var refer = $('tbody_contact_submit');
  3.    var newTr = createElement ('tr');
  4.    newTr.id = 'tr_name_error'; // Asigno un ID para hacer referencia a el luego
  5.       patron = /^[\D]$/
  6.           if (!patron.test ($(id)) {
  7.                      // Si no cumple el patron inserto el TR cn el error encima del
  8.                     // input nombre
  9.               refer.insertBefore(newTr,$(tr_error_id));
  10.               newTr.innerHTML = "<td>El mensaje de error </td>";          
  11.           }
  12.                 else {
  13.                         if ($('tr_name_error')) { // Si existe el tr error lo elimino
  14.                              refer.removeChild($('tr_name_error'));
  15.                         }
  16.                  }
  17.  
  18. }

Cuando el campo cumple con el patron perfecto elimina el Tag TR ..

Pero si me creo otra funcion como lo explique antes y hago un;

Código javascript:
Ver original
  1. if ($('tr_name_error')) {
  2.      alert ('Existe');
  3. }
  4.       else {
  5.          alert ('No existe');
  6.       }

Aunq el TR existe y esta visible el error en el navegador me arroja que
no existe u.u

Que estare haciendo mal ? =[
tienes un pequeño error:

refer.insertBefore(newTr,$(tr_error_id));


usa:

refer.insertBefore(newTr,$('tr_error_id'));

En si los dos tiene que ver con los mismo. No puedes acceder a un elemento creado con createElement con getElementById sin haberlo insertado al documento.
__________________
Por fin vuelvo a tener internet!
http://www.anidandoetiquetas.com/