Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.lang.javascript > #7918 > unrolled thread

Problema javascript su ipad/iphone, codice in errore

Started byGristian <Gristian@nospam.no>
First post2015-10-31 07:47 +0100
Last post2015-10-31 09:57 +0100
Articles 5 — 2 participants

Back to article view | Back to it.comp.lang.javascript


Contents

  Problema javascript su ipad/iphone, codice in errore Gristian <Gristian@nospam.no> - 2015-10-31 07:47 +0100
    Re: Problema javascript su ipad/iphone, codice in errore Alessandro Pellizzari <shuriken@amiran.it> - 2015-10-31 07:45 +0000
      Re: Problema javascript su ipad/iphone, codice in errore Gristian <Gristian@nospam.no> - 2015-10-31 09:03 +0100
      Re: Problema javascript su ipad/iphone, codice in errore Gristian <Gristian@nospam.no> - 2015-10-31 09:15 +0100
      Re: Problema javascript su ipad/iphone, codice in errore Gristian <Gristian@nospam.no> - 2015-10-31 09:57 +0100

#7918 — Problema javascript su ipad/iphone, codice in errore

FromGristian <Gristian@nospam.no>
Date2015-10-31 07:47 +0100
SubjectProblema javascript su ipad/iphone, codice in errore
Message-ID<n11o6a$385$1@speranza.aioe.org>
Scusate è la prima volta che mi cimento in una versione mobile di un 
piccolo sito (personale, non sono un pro) e mi sono imbattuto in un 
errore che non so cosa sia.

Praticamente da Ipad e Iphone, qualunque browser usi, ho una procedura 
che mi va in errore.

Il problema è che non so quale sia.

Questo è il mio codice:

*************************************************************

     //Recupero i numeri assegnati sino ad ora
     var Ord_elenco = [];
     $("#elenco span.label").each(function() {
         var contenuto = parseInt($(this).text());
         if (!isNaN(contenuto)) {
             Ord_elenco.push(contenuto);
         }
     });

     var numItems = $('#elenco i.fa-refresh').length;

     var Ord_elenco_ordinato = Ord_elenco.sort();

     alert('Ord_elenco_ordinato: '+Ord_elenco_ordinato); //alert NUM 1

     var numero = $("td[name=User_" + Codice + "").children('span');

     alert('numero non json: '+numero); //alert NUM 2

     alert('numero: '+JSON.stringify(numero)); //alert NUM 2


     var i;
     var spazio = false;
     if (Ord_elenco_ordinato.length > 1) {
         for (i = 1; i <= Ord_elenco_ordinato.length; i++) {
             var differenza = Ord_elenco_ordinato[i + 1] - 
Ord_elenco_ordinato[i];
             if (differenza != 1) {
                 numero.text(Ord_elenco_ordinato[i] + 1);
                 spazio = true;
                 break;
             }
         }
     }

     if (spazio === false && $.inArray(numItems, Ord_elenco) === -1) {
         numero.text(numItems);
     }

}


******************************************************************************


Ho debbugato da ipad a colpi di alert (c'è un metodo più efficace?) e 
l'ho fatto passo passo. Qui sopra ho lasciato gli alert più significativi.

L'alert NUM 1 restituisce il giusto valore ma poi la procedura non 
esegue l'alert NUM 2 e di qui i guai.


Cos'è che ipad/iphone non digeriscono?
C'è qualche linea guida che sarebbe bene seguisse per evitare errori in 
futuro?

Grazie in anticipo.

[toc] | [next] | [standalone]


#7919

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2015-10-31 07:45 +0000
Message-ID<d9j9svFh275U1@mid.individual.net>
In reply to#7918
Il Sat, 31 Oct 2015 07:47:38 +0100, Gristian ha scritto:

>      //Recupero i numeri assegnati sino ad ora var Ord_elenco = [];
>      $("#elenco span.label").each(function() {
>          var contenuto = parseInt($(this).text());

Usa sempre la base quando fai parseInt: parseInt($(this).text(), 10)

>      var numero = $("td[name=User_" + Codice + "").children('span');
> 
>      alert('numero non json: '+numero); //alert NUM 2
> 
>      alert('numero: '+JSON.stringify(numero)); //alert NUM 2

"numero" è un oggetto jQuery, una collection che include tutti gli span 
dentro quel td.
Cosa ti aspetti che ti stampi?
 
>          for (i = 1; i <= Ord_elenco_ordinato.length; i++) {
>              var differenza = Ord_elenco_ordinato[i + 1] -
> Ord_elenco_ordinato[i];

Gli indici di elenco ordinato vanno da 0 a length-1, mentre tu stai 
ciclando da 1 a length+1.
Mi stupisce che in altri browser non ti dia errori...

Ti conviene estrapolare quel ciclo in una funzione e scriverci sopra un 
po' di unit-test, quindi rivederla tutta.

> Ho debbugato da ipad a colpi di alert (c'è un metodo più efficace?) e

Si iPad non ho idea. Su Android puoi usare i remote debugging tools di 
Chrome (e credo anche Firefox li abbia adesso).

Bye.

[toc] | [prev] | [next] | [standalone]


#7920

FromGristian <Gristian@nospam.no>
Date2015-10-31 09:03 +0100
Message-ID<n11skv$bsi$1@speranza.aioe.org>
In reply to#7919
Grazie Alessandro,
ti confermo che su tutti gli altri browser (Chrome, FF, IE + Android) 
non ho problemi.

 >>       var numero = $("td[name=User_" + Codice + "").children('span');
 >>
 >>       alert('numero non json: '+numero); //alert NUM 2
 >>
 >>       alert('numero: '+JSON.stringify(numero)); //alert NUM 3
 >
 > "numero" è un oggetto jQuery, una collection che include tutti gli span
 > dentro quel td.
 > Cosa ti aspetti che ti stampi?

Qualsiasi altro browser, in quel punto, mi stampa:
alert NUM 2: 'numero non json: [object][object];
alert NUM 3: 'numero: ' tutti i dati dell'oggetto numero.


Su Ipad e Iphone non viene stampato ne l'alert NUM 2 ne l'alert NUM 3, 
non compaiono proprio gli alert.

Per quello che avviene dopo seguirò certamente il tuo consiglio ma che 
posso provare per superare questo blocco?






Il 31/10/2015 08.45, Alessandro Pellizzari ha scritto:
> Il Sat, 31 Oct 2015 07:47:38 +0100, Gristian ha scritto:
>
>>       //Recupero i numeri assegnati sino ad ora var Ord_elenco = [];
>>       $("#elenco span.label").each(function() {
>>           var contenuto = parseInt($(this).text());
>
> Usa sempre la base quando fai parseInt: parseInt($(this).text(), 10)
>
>>       var numero = $("td[name=User_" + Codice + "").children('span');
>>
>>       alert('numero non json: '+numero); //alert NUM 2
>>
>>       alert('numero: '+JSON.stringify(numero)); //alert NUM 2
>
> "numero" è un oggetto jQuery, una collection che include tutti gli span
> dentro quel td.
> Cosa ti aspetti che ti stampi?
>
>>           for (i = 1; i <= Ord_elenco_ordinato.length; i++) {
>>               var differenza = Ord_elenco_ordinato[i + 1] -
>> Ord_elenco_ordinato[i];
>
> Gli indici di elenco ordinato vanno da 0 a length-1, mentre tu stai
> ciclando da 1 a length+1.
> Mi stupisce che in altri browser non ti dia errori...
>
> Ti conviene estrapolare quel ciclo in una funzione e scriverci sopra un
> po' di unit-test, quindi rivederla tutta.
>
>> Ho debbugato da ipad a colpi di alert (c'è un metodo più efficace?) e
>
> Si iPad non ho idea. Su Android puoi usare i remote debugging tools di
> Chrome (e credo anche Firefox li abbia adesso).
>
> Bye.
>

[toc] | [prev] | [next] | [standalone]


#7921

FromGristian <Gristian@nospam.no>
Date2015-10-31 09:15 +0100
Message-ID<n11tbj$cvn$1@speranza.aioe.org>
In reply to#7919
Aggiungo una info, che a quanto letto su Google potrebbe essere importante.

Lo span che vado a cercare tramite

var numero = $("td[name=User_" + Codice + "").children('span');

è aggiunto all'elemento TD, dinamicamente, da codice precedente a quello 
scritto.

Quindi è uno span aggiunto dopo che il DOM è stato caricato (spero di 
non aver scritto castronerei).

Ripeto che sia da browser desktop che device android il problema non 
sussiste.





Il 31/10/2015 08.45, Alessandro Pellizzari ha scritto:
> Il Sat, 31 Oct 2015 07:47:38 +0100, Gristian ha scritto:
>
>>       //Recupero i numeri assegnati sino ad ora var Ord_elenco = [];
>>       $("#elenco span.label").each(function() {
>>           var contenuto = parseInt($(this).text());
>
> Usa sempre la base quando fai parseInt: parseInt($(this).text(), 10)
>
>>       var numero = $("td[name=User_" + Codice + "").children('span');
>>
>>       alert('numero non json: '+numero); //alert NUM 2
>>
>>       alert('numero: '+JSON.stringify(numero)); //alert NUM 2
>
> "numero" è un oggetto jQuery, una collection che include tutti gli span
> dentro quel td.
> Cosa ti aspetti che ti stampi?
>
>>           for (i = 1; i <= Ord_elenco_ordinato.length; i++) {
>>               var differenza = Ord_elenco_ordinato[i + 1] -
>> Ord_elenco_ordinato[i];
>
> Gli indici di elenco ordinato vanno da 0 a length-1, mentre tu stai
> ciclando da 1 a length+1.
> Mi stupisce che in altri browser non ti dia errori...
>
> Ti conviene estrapolare quel ciclo in una funzione e scriverci sopra un
> po' di unit-test, quindi rivederla tutta.
>
>> Ho debbugato da ipad a colpi di alert (c'è un metodo più efficace?) e
>
> Si iPad non ho idea. Su Android puoi usare i remote debugging tools di
> Chrome (e credo anche Firefox li abbia adesso).
>
> Bye.
>

[toc] | [prev] | [next] | [standalone]


#7922

FromGristian <Gristian@nospam.no>
Date2015-10-31 09:57 +0100
Message-ID<n11vq1$i78$1@speranza.aioe.org>
In reply to#7919
Allora... sono un pirla. :(

Il primo errore "grave" sta qua:

var numero = $("td[name=User_" + Codice + "").children('span');

manca la chiusura ] del tag TD. :(

Nessun browser testato me l'ha segnalato, assurdo. :(

Ora lavoro sul ciclo come mi ha segnalato.

Grazie




Il 31/10/2015 08.45, Alessandro Pellizzari ha scritto:
> Il Sat, 31 Oct 2015 07:47:38 +0100, Gristian ha scritto:
>
>>       //Recupero i numeri assegnati sino ad ora var Ord_elenco = [];
>>       $("#elenco span.label").each(function() {
>>           var contenuto = parseInt($(this).text());
>
> Usa sempre la base quando fai parseInt: parseInt($(this).text(), 10)
>
>>       var numero = $("td[name=User_" + Codice + "").children('span');
>>
>>       alert('numero non json: '+numero); //alert NUM 2
>>
>>       alert('numero: '+JSON.stringify(numero)); //alert NUM 2
>
> "numero" è un oggetto jQuery, una collection che include tutti gli span
> dentro quel td.
> Cosa ti aspetti che ti stampi?
>
>>           for (i = 1; i <= Ord_elenco_ordinato.length; i++) {
>>               var differenza = Ord_elenco_ordinato[i + 1] -
>> Ord_elenco_ordinato[i];
>
> Gli indici di elenco ordinato vanno da 0 a length-1, mentre tu stai
> ciclando da 1 a length+1.
> Mi stupisce che in altri browser non ti dia errori...
>
> Ti conviene estrapolare quel ciclo in una funzione e scriverci sopra un
> po' di unit-test, quindi rivederla tutta.
>
>> Ho debbugato da ipad a colpi di alert (c'è un metodo più efficace?) e
>
> Si iPad non ho idea. Su Android puoi usare i remote debugging tools di
> Chrome (e credo anche Firefox li abbia adesso).
>
> Bye.
>

[toc] | [prev] | [standalone]


Back to top | Article view | it.comp.lang.javascript


csiph-web