Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 42
  1. #1

    errore in IE con array.style

    Ciao,
    ho un problema con un js con IE 8.
    L'errore che mi da e`: Invalid Argument
    e la riga segnalata e la seguente:

    ellisse[i].style.width = Math.round(2*semiasseM[i])+"px";

    che fa parte di questo pezzo di codice:

    function regola_ell(){
    for (var i=0; i<10; i++){
    ellisse[i].style.width = Math.round(2*semiasseM[i])+"px";
    ellisse[i].style.height = Math.round(2*semiassem[i])+"px";
    ellisse[i].style.left = regolaleft - (parseInt(ellisse[i].style.width)/2) + "px";
    ellisse[i].style.top = 100 - (parseInt(ellisse[i].style.height)/2) + "px";
    if(i<9){
    Db[i].style.top = 40 + (parseInt(ellisse[i].style.height)/2) +"px";
    Db[i].style.left = regolaleft +"px";
    }
    }
    }

    e l'array e` definito fuori dalla funzione ma nello stesso file. Inoltre mettendo un alert con all'interno
    ellisse[i].style.width mi restituisce tutti i giusti valori.
    Quale puo` essere il problema?

  2. #2
    ellisse[i].style.width = Math.round(2*semiasseM[i])+"px";
    ellisse[i].style.height = Math.round(2*semiassem[i])+"px";

    hanno due array differenti... semiasseM - semiassem
    non sono la stessa cosa

  3. #3
    si si certo
    sono dichiarati diversamente infatti

  4. #4
    scusami faccio una domanda sciocca sono sicuro che tu avrai già fatto questo, ma anche l'altro array è globale? perchè altrimenti non ti può calcolare nulla...

  5. #5
    Si, tutti e tre gli array sono globali: ellisse[], semiassem[] e semiasseM[], tant'e` che con un alert leggo tutti i valori calcolati correttamente.
    E funziona tutto, fa l'elaborazione correttamente (come firefox), l'unico problema e` questo errore che non capisco

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Non sara' che semiasseM[i] non e' un numero?
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Sono tutti numeri, ripeto, il calcolo viene fatto, l'elaborazione viene fatta, tutto correttamente. Come dire... FUNZIONA! Pero' mi segnala l'errore la consolle. Mi sono spiegata ora?

  8. #8
    se c'e` un santo buonuomo che vuole dedicarmi 5 minuti del suo tempo, io mando tutti per e-mail cosi forse e` piu chiaro

  9. #9
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Se la riga è davvero quella, Invalid Argument può essere causato solo dall'argomento dell'unica funzione presente, ovvero dall'argomento di Math.round. Giacché l'argomento è una moltiplicazione, se uno dei due valori non è un numero il risultato sarà NaN, ovvero “Not a Number”. Su Firefox lanciare Math.round(NaN) dà come risultato NaN:

    codice:
    alert(Math.round(NaN));
    Non so se la stessa cosa avviene in IE oppure se viene restituito un errore del tipo Invalid Argument. L'unico consiglio che posso darti è di controllare che la riga che scatena l'errore sia veramente quella, quindi di controllare che [I]semiasseM sia veramente un numero in IE, così:

    codice:
    function regola_ell(){
    	for (var i=0; i<10; i++){
    		alert(typeof semiasseM[i]);
    		ellisse[i].style.width = Math.round(2*semiasseM[i])+"px";
    		ellisse[i].style.height = Math.round(2*semiassem[i])+"px";
    		ellisse[i].style.left = regolaleft - (parseInt(ellisse[i].style.width)/2) + "px";
    		ellisse[i].style.top = 100 - (parseInt(ellisse[i].style.height)/2) + "px";
    		if(i<9){
    			Db[i].style.top = 40 + (parseInt(ellisse[i].style.height)/2) +"px";
    			Db[i].style.left = regolaleft +"px";
    		}
    	}
    }

  10. #10
    Grazie mille dei consigli, ho fatto come mi hai detto e mi ha dato number per tutte le i, sia per semiassem[i] che semiasseM[i], inoltre ho provato a togliere la funzione Math.round (visto che non e` indispensabile), ma continua a darmi lo stesso identico errore: Invalid Argument.
    Ho sbagliato qualcosa nel scrivere il for? O si riferisce agli argomenti della funzione (che non ci sono )?
    Grazie ancora dell'aiuto siete gentilissimi

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.