JavaScript: usare getElementsByClassName() nelle versioni obsolete di Internet Explorer

JavaScript: usare getElementsByClassName() nelle versioni obsolete di Internet Explorer

Il metodo getElementsByClassName() non è implementato nelle versioni obsolete di Internet Explorer. Possiamo tuttavia porvi rimedio utilizzando una soluzione originariamente proposta da Dustin Diaz.

La soluzione, opportunamente adattata, è la seguente:


if (typeof document.getElementsByClassName !== 'function') {

	var getElementsByClassName = function(searchClass, node, tag) {

		var classElements = [];

		if (node == null) {

			node = document;
			
		}

		if (tag == null) {

		 	tag = '*';
		}

	var els = node.getElementsByTagName(tag);

	var elsLen = els.length;

	var pattern = new RegExp("(^|\\s)" + searchClass + "(\\s|$)");

	for (i = 0, j = 0; i < elsLen; i++) {

		if (pattern.test(els[i].className)) {

			classElements[j] = els[i];

			j++;

			
		}

		
	}

	return classElements;

	
}


}

I parametri node e tag sono opzionali ma ci permettono di restringere la ricerca ad uno specifico contesto.

Torna su