No se como lo solucionaste pero para aquellos que lleguen aquí en este:
Cita:
Iniciado por starmark
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
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 originalfunction validar (id,tr_error_id) {
var refer = $('tbody_contact_submit');
var newTr = createElement ('tr');
newTr.id = 'tr_name_error'; // Asigno un ID para hacer referencia a el luego
patron = /^[\D]$/
if (!patron.test ($(id)) {
// Si no cumple el patron inserto el TR cn el error encima del
// input nombre
refer.insertBefore(newTr,$(tr_error_id));
newTr.innerHTML = "<td>El mensaje de error </td>";
}
else {
if ($('tr_name_error')) { // Si existe el tr error lo elimino
refer.removeChild($('tr_name_error'));
}
}
}
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 originalif ($('tr_name_error')) {
alert ('Existe');
}
else {
alert ('No existe');
}
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.