2011-06-08 10 views
5

Esto podría ser una locura, pero me intriga desde hace bastante tiempo :)¿Cómo una variable vincula su valor al DOM?

Me gustaría saber cómo una variable de JavaScript puede obligarse a hacer el DOM después de que se anexa al cuerpo, por ejemplo?

var p = document.createElement('p'); 
p.innerHTML = 'Hello World'; 

document.body.appendChild(p); 

así que ahora tengo esta variable p que contiene una referencia exacta de ese párrafo específico sin importar dónde se encuentra dentro del cuerpo.

p.innerHTML = 'new content'; 

va a encontrar fácilmente el párrafo y cambiar su valor

Así que mi pregunta es ... ¿cómo se hace esta unión?

¿Qué sucede si quiero volver a crear eso después de que la variable se haya ido? ¿hay alguna forma de volver a adjuntar eso sin tener que ejecutar el DOM y encontrarlo?

Estaba pensando si de alguna manera cada nodo dentro del DOM tiene su identificador específico que no es el atributo id pero ¿algún tipo de UUID que se puede consultar más adelante?

como:

console.log(p.localName); //aoi12e2kj2322444r4t 
p = null; 

por lo que aún puede recuperar ese nodo párrafo pensado que esto UUID?

En este entorno no tener acceso a cualquier atributo nodo externo, tales name, id, data, etc ..

así que estoy bastante curiosidad por saber cómo se crea esta unión entre la variable y el nodo DOM ?

Respuesta

0

El enlace se crea en la primera línea, donde asigna el resultado de document.createElement a . Esto no es diferente de cualquier otro momento en que le asigne algo a una variable, lo que siempre vincula el nombre de la variable al valor. En lo que se refiere a la secuencia de comandos, no se produce ninguna otra vinculación. El p es un elemento HTMLElement, y eso es todo el elemento que está expuesto.

Tenga en cuenta que para p.innerHTML = 'new content';, el elemento no tiene que ser encontrado porque p ya se refiere al elemento. Eso es lo que hace DOM: expone documentos y elementos de documentos.

Si luego desea otra referencia al mismo elemento, tendrá que usar los métodos DOM (como getElementById) para encontrarlo. Para eso están allí.

En cuanto a cómo el DOM expone elementos, eso se implementa internamente y varía de un navegador a otro o de una biblioteca a otra (dado que el DOM no se usa solo en los navegadores).

+0

gracias @outis, mi único problema con el uso de 'id' fue romper/sobrescribir las reglas de css que se refieren a un elemento, ya que crearía uuids para los elementos en el tiempo que los use. Entonces podría recuperarlos solo teniendo este uuid asignado ... Prefiero 'id' porque es el más rápido de encontrar ¿no?También pensé en el conjunto de datos, pero supongo que encontrar elementos por su conjunto de datos envolvería procesos que son mucho más lentos que el enlace de ID .... y como cada elemento solo puede tener un 'id' que es correcto ...:/I Todavía pensando cuál es la mejor opción, muchas gracias por su contribución – zanona

1

Creo que cambia según el navegador que utilice. No hay una forma estándar de hacerlo. Actualmente, usted usa el id o itera sobre el dom hasta llegar al elemento que desea.

Cuestiones relacionadas