Foros del Web » Programando para Internet » Javascript »

Cambiar name y luego usar getElementsByName

Estas en el tema de Cambiar name y luego usar getElementsByName en el foro de Javascript en Foros del Web. Hola, La situación es así: Tengo -por ejemplo- dos celdas y a cada celda le asigno un name e id diferente y una función simple ...
  #1 (permalink)  
Antiguo 16/08/2006, 10:57
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 10 meses
Puntos: 5
Cambiar name y luego usar getElementsByName

Hola,

La situación es así:

Tengo -por ejemplo- dos celdas y a cada celda le asigno un name e id diferente y una función simple que lo que hace es cambiar el color de fondo de la celda al darle clic sobre ella misma, hasta ahí esta bien. Después tengo una función –de prueba- que lo que hace es cambiar todos los datos de una celda para otra (invirtiéndolas) al decir todos los datos me refiero a: name, id, evento onclick y el innerHTML de cada celda.

El problema ocurre debido a que en firefox no toma en cuenta el cambio de name de una celda a otra. Esto ocasiona que una vez invertidos los datos de las celdas al dar clic sobre una celda cambia el color de fondo de la otra –no actualiza el cambio de name- ¿me explico? Cuando lo que debería hacer es cambiar su propio color de fondo y no el de la otra celda.

Esto me lleva a pensar que el cambio de name no es tomado en cuenta correctamente en firefox, todo funciona correctamente en Explorer y supongo que es debido a que Explorer toma en cuenta el id y no el name al usar getElementsByName.

La necesidad mía de usar name y no solo id es debido a que en la aplicación real de esto llegara a haber mas de un elemento con el mismo “name” y debo poder trabajarlos como array.

¿Cómo puede cambiarse el name para que lo tome inmediatamente en cuenta al hacer un getElementsByName? ¿O que alternativa se puede usar?

El código donde puede verse el fenómeno es el siguiente:

Código:
<script>
function marcar(x,nombre)
{
    document.getElementsByName(x)[0].bgColor="blue";    // Cambiar color de fondo
}

function invertir_valores()
{
    or=new Array();
    de=new Array();
    
    /* destino y origen */
    origen=document.getElementById('a');
    destino=document.getElementById('b');
    
    /* Datos del origen */
    or['name']=origen.name;
    or['id']=origen.id;
    or['onclick']=origen.onclick;
    or['innerhtml']=origen.innerHTML;    

    origen.name=destino.name;            // Cambiar name del origen                
    origen.id=destino.id;
    origen.onclick=destino.onclick;
    origen.innerHTML=destino.innerHTML;    

    destino.name=or['name'];            // Cambiar name del destino
    destino.id=or['id'];
    destino.onclick=or['onclick'];
    destino.innerHTML=or['innerhtml'];
}
</script>

<table border="1" cellpadding="5">
    <tr>
        <td id="a" name="a" onClick="marcar('a');">a</td>
        <td id="b" name="b" onClick="marcar('b');">b</td>
    </tr>
</table>

<input type="button" value=" invertir " onClick="invertir_valores();"> 
 



Al correr el código cada celda se colorea dándole un clic encima, pero si en vez de eso se le da clic al botón “invertir” y luego clic en una celda, se marcara justamente la celda contraria. Este fenómeno solo se representa en firefox en Explorer funciona como debe ser.

Saludos,
__________________
<? echo("1 <script> dice + que 1000 palabras"); ?> EspacioMéxico
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 05:56.