¿Cómo puedo asignar un alias a la función "document.getElementById" lo he visto hacer usando $Crear alias a document.getElementById en Javascript
Gracias
¿Cómo puedo asignar un alias a la función "document.getElementById" lo he visto hacer usando $Crear alias a document.getElementById en Javascript
Gracias
Posiblemente el/forma más fácil más corto:
function $(id) { return document.getElementById(id); };
No es la manera más corta, y ciertamente no la más eficiente. No es necesario aplicar el mismo contexto a una función que se aplica de todos modos sin 'Function.apply'. La forma más corta es 'función $ (s) {return document.getElementById (s)}' –
Tiene razón. Pensé que getElementById podría tomar un segundo parámetro de ámbito opcional, pero al buscar la especificación (http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-getElBId) este no es el caso . Enmendado –
Este es el que responde la pregunta sin intentar agregar todo tipo de volantes –
Cuando usted ha visto la función $() , era probablemente una biblioteca como jQuery o Prototype. La función $ no es un alias para document.getElementById, pero es un contenedor que amplía la funcionalidad de la función.
para crear su propio envoltorio, se podría escribir una función de "alias":
var alias = document.getElemenyById;
o
function alias(id) { return document.getElementById(id); }
Pero, en realidad, me gustaría utilizar una de las bibliotecas disponibles, tales como jQuery o Prototype .
+1 pero debe explicar que el motivo por el que se crea un "alias" es tan simple como que javascript tiene funciones de primera clase – annakata
en cualquier condición/uso ¿este alias no funcionará en IE6/7? Lo he bloqueado hoy en algún código anterior y el problema se resolvió reemplazando el alias con document.getElementById. De hecho, utilicé el segundo tipo de función "alias" anterior. ¿Algunas ideas? –
La parte 'var alias = document.getElementById' de esta respuesta es incorrecta. Crear un alias como se demuestra aquí no funciona en Firefox o Google Chrome. Ver http://stackoverflow.com/questions/1007340 para más información. –
Esto es algo que uso en mi propia biblioteca. DOM
es la clase y $
es una función que es una aplicación de acceso directo de la función getElementById
:
function DOM()
{
this.$ = function(elementIDs)
{
var el;
// If an array of element names is passed.
if (arguments.length > 1)
{
var elements = [];
var length = arguments.length;
for (var i = 0; i < length; i++)
{
// Call this function recursively for each passed parameter.
elements.push(this.$(arguments[i]));
}
return elements;
}
// If a single element name is passed.
if (typeof(elementIDs) == "string")
{
el = document.getElementById(elementIDs);
}
return el;
}
}
Uso:
var el = new DOM().$("elementID");
Usted puede crear un alias para el elemento de ventana de nivel superior.
¿Por qué está usando un constructor que no tiene ningún estado? Debería ser 'var DOM = {'$': function (ids) {...}}'. Además, su respuesta hace mucho más de lo que se le preguntó, OP pidió un alias para document.getElementById. Si desea el comportamiento de jQuery, simplemente use jQuery en lugar de reinventar la rueda –
function $(s) {
return document.getElementById(s) ? document.getElementById(s) : "";
}
$("myId");
Esto supone que solo desea utilizar la función dólar (selector) para obtener una ID. No probé eso, pero debería funcionar.
La última vez que miré el núcleo de jQuery, tomó una cadena como argumento y luego usé una expresión regular para determinar qué tipo de selector era.
@ hal10001: Esto 'huele' horrible para mí. Llamar a document.getElementById() dos veces parece un desperdicio y esta función devuelve un HTMLElement o un String. ¿Qué tal solo 'return document.getElementById (s);' ? –
Puede devolver nulo en lugar de la cadena si lo desea. En jQuery, se devuelve un objeto jQuery vacío si no se encuentra ninguna ID. Si no haces algo así, entonces te vuelves indefinido. Todo lo que realmente hizo fue dar un ejemplo del selector de dólares en acción. –
No solicitó una función jquery $, solo un alias para document.getElementById. –
facebook's connect-js hace lo siguiente en src/core/prelude.js:
if (!window.FB) {
FB = {
// ...
$: function(id) {
return document.getElementById(id);
}
// ...
}
}
Entonces, para utilizarlo, que hacen:
FB.$('name-of-id');
El inicial bloque crea el objeto global FB. Usan este objeto, FB, como un espacio de nombres y definen todos sus objetos, propiedades y funciones dentro de él. De esta forma, funcionará con otro código JavaScript siempre que ese otro código no use el objeto global FB.
no es una respuesta ... – galambalazs
ahora es una respuesta ... – ma11hew28
Las nuevas características introducidas en ES6 permiten a mejorar la calidad de la respuesta de Chris Lloyd, simplificando:
function $(id) { return document.getElementById(id); };
a:
const $ = id=> document.getElementById(id);
Una pregunta más inteligente habría sido para preguntar cómo crear una alias * a cualquier profundidad *; p.ej. 'document.getElementById ('example'). tag ('div')' aunque como siempre haré esa pregunta y terminaré marcado como un dup por un dup. – John