Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Problema con funzione getElementsByClassName

    Salve a tutti,
    ho creato questa piccola funzione per ottenere tutte le class css in un documento tramite javascript.
    Ma con Firefox, ecc. funziona (OVVIAMENTE!) in modo eccellente, mentre in Internet Explorer 7 (non ho i precedenti, ma di certo non andrà neanche lì) invece non funzione e mi à il seguente errore:
    Proprietà o metodo non supportati dall'oggetto
    Qualcuno sa spiegarmi il perchè?
    Ecco il codice:
    codice:
    Object.prototype.getElementsByClassName = function (_className)
    {
    	var _classArray = [];
    	var _regExp = new RegExp('\\b' + _className + '\\b');
    	var _getAllTags = this.getElementsByTagName('*');
    	for(var i = 0; i < _getAllTags.length; i++)
    	{
    		if (_regExp.test(_getAllTags[i].className) == true)
    		{
    			_classArray.push(_getAllTags[i]);
    		}
    	}
    
    	return _classArray;
    }
    Grazie anticipatamente!

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Cosi funziona per entrambi.

    codice:
    function getElementsByClassName(_className)
    {
    	var _classArray = [];
    	var _regExp = new RegExp('\\b' + _className + '\\b');
    	//var _getAllTags = this.getElementsByTagName('*');
    	var _getAllTags = document.getElementsByTagName('*');
    	for(var i = 0; i < _getAllTags.length; i++)
    	{
    		if (_regExp.test(_getAllTags[i].className) == true)
    		{
    			_classArray.push(_getAllTags[i]);
    		}
    	}
    
    	return _classArray;
    }
    
    document.getElementsByClassName = getElementsByClassName;
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Eh grazie... ma così vanifica la sua utilità!
    Il mio codice permette di gestire quella funzione come "getElementsById", "getElementsByTagName", ecc.

    Con firefox nessun problema... ma con IE sì!

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da jan267
    Eh grazie... ma così vanifica la sua utilità!
    Il mio codice permette di gestire quella funzione come "getElementsById", "getElementsByTagName", ecc.

    Con firefox nessun problema... ma con IE sì!
    Eh no. Viene usato con document. L'esempio sotto lo dimostra.
    Ho IE 6.

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title>Untitled</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    //Object.prototype.getElementsByClassName = function (_className)
    
    function getElementsByClassName(_className)
    {
    	var _classArray = [];
    	var _regExp = new RegExp('\\b' + _className + '\\b');
    	//var _getAllTags = this.getElementsByTagName('*');
    	var _getAllTags = document.getElementsByTagName('*');
    	for(var i = 0; i < _getAllTags.length; i++)
    	{
    		if (_regExp.test(_getAllTags[i].className) == true)
    		{
    			_classArray.push(_getAllTags[i]);
    		}
    	}
    
    	return _classArray;
    }
    
    document.getElementsByClassName = getElementsByClassName;
    //-->
    </script>
    
    </head>
    <body>
    
    dfgfgff
    <div class="toto">dldldldllmgf$$$</div>
    
    <script language="JavaScript" type="text/javascript">
    <!--
    var a = new Array();
    a = document.getElementsByClassName('toto');
    for (i=0;i<a.length;i++) {
     alert(a[i].tagName);
    }
    //-->
    </script>
    
    
    </body>
    </html>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Ooppss volevo dire che funziona anche con : var _getAllTags = this.getElementsByTagName('*');.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Lo so benissimo.
    Il problema è che la funzione è LIMITATA in questo modo.
    Al momento io sto utilizzando questa mia funzione, che è la stessa cosa di quella che mi hai proposto tu:
    codice:
    document.getElementsByClassName = function(classname)
    {
    	var a = [];
    	var re = new RegExp('\\b' + classname + '\\b');
    	var els = document.getElementsByTagName("*");
    	for(var i = 0, j = els.length; i < j; i++)
    	{
    		if (re.test(els[i].className))
    		{
    			a.push(els);
    		}
    	}
    
    	return a;
    }
    


    Solamente che se io volessi "restringere il campo", ossia cercare tutti i documenti con una certa classe non in document bensì in test (var test = document.getElementById('test');) che potrebbe essere un div qualunque, non posso!
    Mentre, con la funzione che proponevo prima (che appunto con FIREFOX funziona correttamente, quindi è sintatticamente corretta!!) per fare ciò che desidero posso agire in questo modo: test.getElementsByClassName('blabla') ed ottengo il risultato cercato.

    Ti mostro un esempio:
    http://demo.jacoz.net/javascript/obj...lass-name.html

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Sul sito della Microsoft dicono dell'oggetto Object che è legato a tutti gli oggetti ma suppongo siano gli oggetti del JScript ma non quei del DOM.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Già... quella pagina l'avevo visitata anche io!
    Boh

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.