Salve!
Ho un problema con una libreria che sto costruendo, ovvero la libreria pur essendo perfettamente visibile alla pagina html di prova, non trova un elemento collegato.
Questo il codice definito:
codice:
var $ = function(){}; // Oggetto vuoto e pronto per la modifica.
var elements = []; // Utilizzata per concatenare più oggetti.
/**
* Prende l'IDentificativo dell'elemento in oggetto (funzione cross browser)
* Uso: var e = $.Element.get('pippo').value; Se 'pippo' è un controllo tipo INPUT, in value c'è il suo valore
*/
$.prototype.Element = {
/**
* Metodo: cache
Mette nella cache un elemento DOM (metodo privato di get: vedi sotto)
Argomenti:
- [string] id : l'id dell'elemento desiderato
*/
cache: function(id) {
if(!elements[id]) {
if (document.getElementById) { // Mozilla + IE6/7/8/9
elements[id] = document.getElementById(id);
} else if (document.all) { // IE4
elements[id] = document.all[id];
} else if (document.layers) { // Netscape 4
elements[id] = document.layers[id];
}
}
return elements[id];
}, // cache()
/**
* Metodo: get
Restituisce un elemento DOM basandosi sull'id dello stesso
Argomenti:
- [string] id : l'id dell'elemento desiderato
Esempio d'uso: var valore = $.Element.get('pippo').value;
*/
get: function(id) {
var e = false;
if (typeof id == 'string') { // Se l'ID è una stringa lo processo
e = cache(id);
}
return e;
} // get()
}; // Element
In pratica richiamando per prova la funzione get() mi da come errore: Uncaught TypeError: Cannot call method 'get' of undefined (in Chrome).
Ho provato e riprovato a guardare se ci fossero errori di sintassi nel codice ma non ne vedo.
La funzione la richiamo in modo semplice così da fornirmi il colore di sfondo di un elemento HTML che ho creato appositamente, tanto per vedere se funziona.
codice:
alert('Colore: ' + $.Element.get('prova').style.backgroundColor);
Qualcuno saprebbe aiutarmi a trovare l'errore, io proprio non ci riesco