Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.lang.javascript > #7918 > unrolled thread
| Started by | Gristian <Gristian@nospam.no> |
|---|---|
| First post | 2015-10-31 07:47 +0100 |
| Last post | 2015-10-31 09:57 +0100 |
| Articles | 5 — 2 participants |
Back to article view | Back to it.comp.lang.javascript
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
| From | Gristian <Gristian@nospam.no> |
|---|---|
| Date | 2015-10-31 07:47 +0100 |
| Subject | Problema 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]
| From | Alessandro Pellizzari <shuriken@amiran.it> |
|---|---|
| Date | 2015-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]
| From | Gristian <Gristian@nospam.no> |
|---|---|
| Date | 2015-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]
| From | Gristian <Gristian@nospam.no> |
|---|---|
| Date | 2015-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]
| From | Gristian <Gristian@nospam.no> |
|---|---|
| Date | 2015-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