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

    getAttribute non supportato da IE?

    Ho questa funzione che su Firefox funziona perfettamente.

    #####################################
    function setAtt(attribute, replacer, to)
    {
    var A = to.getAttribute(attribute);
    A = A.replace("X",replacer);
    to.setAttribute(attribute,
    to.getAttribute(attribute).replace("X",replacer));
    }

    #####################################

    Su Internet Explorer mi dà errore alla 3a linea: var A =
    to.getAttribute(attribute);

    Mi dice "Proprietà o metodi non supportati" O_O

    Come diavolo risolvo?
    HO BISOGNO DI QUEL METODO!

    Grazie

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    metti in un try catch e nel catch estrai la proprietà con
    A = to[attribute];

  3. #3
    Non posso mettere direttamente to.[attribute]?
    Darebbe errore con i browser non-IE?

  4. #4
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    attenzione io non ho messo il .
    a me sembra più corretto il setAttribute, dunque userei il try catch per i browser che non lo supportano, e soprattutto chi ti dice che il to["nome attributo"] funzioni su tutti i browser?
    sono 4 righe di codice, dai non è faticoso

  5. #5
    Dopo 8 ore di smatto è tutto faticoso
    Comunque adesso ci faccio il try/catch

    Per il punto .... sì hai ragione .... mi è scappato


    Adesso ho un altro problema ben più rognoso.

    In pratica quando vado a fare la replace mi dà un errore.

    La funzione è richiamata da un ciclo che scorre vari elementi e attributi, tra cui anche un 'onClick' alla quale è assegnata la funzione generica 'Sub(X);'.

    Il problema è che quando vado a fare
    codice:
    A = A.replace("X",replacer);
    su Firefox non c'è nessun problema....... ma su IE mi dice che il metodo non è supportato!!

    Infatti se la stampo il valore dell' onClick, su Firefox me lo vede come 'stringa'. Valore:
    "Add()"

    Ma su Internet Explorer invece me lo vede come una 'funzione'. Valore:
    function anonymous() {
    Add();
    }



    !!!! Come diamine posso risolvere?!
    Non ne posso più delle mille incompatibilità di IE

  6. #6
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    non lo so
    cosa è A? cosa è X? cosa è replacer?

  7. #7
    A è una variabile di supporto a cui assegno un attributo generico (può essere un name, un id, un onclick).
    X è un carattere che devo sostituire con un numero.
    replacer è il carattere (un numero) con cui sostituire la X

    Per info:
    La Add viene richiamata da diversi punti della pagina (numerati) e deve clonare un div (col contenuto) e 'adattarlo' (quindi sostituire la X con un numero progressivo)


    Ti incollo la Add() che richiama la funzione:
    codice:
    function Add()
    {
    	var rispDiv = document.getElementById("Risposte"); // Div contenente le risposte
    	var Div = document.getElementById("RispostaX"); // Modello da clonare
    
        nDiv = Div.cloneNode(true);
    	
    	// Ridefinisco gli attributi degli elementi sostituendo la generica X
    
    
    /*
    <span id="numX">X</span> - <input type="text" name="RispostaX" value="" class="testo" />
    	[img]<%= BtnPlus %>[/img]
    	[img]<%= BtnMinus %>[/img]
    */
    
    	setAtt("id",J+1,nDiv);
    
    // La parte importante //
    
    	if (nDiv.hasChildNodes())
    	// So, first we check if the object is not empty, if the object has child nodes
    	 {
    	   var children = nDiv.childNodes;
    	   for (var i = 0; i < children.length; i++) 
    	   {
    			switch(children[i].tagName) 
    			{
    			  
    			  case "SPAN":
    				setAtt("id",J+1,children[i]);
    				children[i].innerHTML = J+1;
    			  break; //si ferma qui
    
    			  case "INPUT":
    				setAtt("name",J+1,children[i]);
    				setAtt("id",J+1,children[i]);
    			  break; //si ferma qui
    			  
    			  case "IMG":
    			    setAtt("onClick",J+1,children[i]);
    			  break; //si ferma qui
    
    			  default:
    			    //niente
    			};
    		}
    	 }
    	 
    	// Aggiungo l'elemento creato alla lista
    	rispDiv.appendChild(nDiv); 
    	
    	J += 1;
    	if (J>Max)
    		Max = J;
    }
    Sai aiutarmi?

  8. #8
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    se A è una stringa
    replacer = "1"
    A.replace(/X/g, replacer)
    funziona

  9. #9
    Il problema è proprio che Internet Explorer non vede A come una stringa

    Cioè per tutti gli attributi scorsi precedentemente sì.... ma per la onClick (dove si aspetta una funzione) non mi vede 'Sub(X)' come una stringa e me la vuole vedere come una funzione (ma diamine io ce lo scrivo come una stringa!! ).

    Di conseguenza mi dice che replace non è un metodo supportato!
    E' possibile fare un casting e trasformare (eresia!) una funzione in una stringa in modo da poter sostituire quella dannata X con un numero?

    Grazie

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 © 2025 vBulletin Solutions, Inc. All rights reserved.