ho qualche codice JavaScript che definisce una funzione getElementsByAttribute
come segue:Object.prototype in JavaScript
Object.prototype.getElementsByAttribute = function(attr) {
var children = this.all || this.getElementsByTagName('*'),
ret = [], i, c;
for(i=0; i<children.length; i++) {
c = children[i].getAttribute(attr);
if(typeof c == "string" && c != "")
ret.push(children[i]);
}
return ret;
}
Questo funziona in tutti i browser che ho testato in, ad eccezione di Internet Explorer 7 (e presumibilmente inferiore) - queste browers throw "Object non supporta questa proprietà o metodo."
L'unica cosa che posso pensare che non mi piace è che gli Oggetti sono già stati creati quando ho definito la funzione prototipo ...
Shrot di definire la funzione come ... beh, un "normale" funzione e passando l'elemento come argomento, c'è un modo per farlo funzionare in IE7 e sotto?
Grazie - buona cosa non uso spesso questa roba e ci sono già fallimenti! –
Ma non sta cercando di aggiungere al prototipo di elementi DOM, sta aggiungendo al prototipo di Object, completamente diverso. –
@torazaburo: Sì, ma si aspetta che gli elementi DOM ereditino 'Object.prototype'. Non lo fanno. – SLaks