melixo ha scritto:
Eh, se già non sono stato chiaro con una riga di codice, se scrivo tutto il contesto faccio prima a captare segnali dallo spazio
Descrivere il contesto vuol dire spiegare brevemente quello che stai cercando di fare, ossia i requisiti e gli obiettivi che vuoi ottenere con il codice che scrivi.
melixo ha scritto:
anche nell'altro post, più leggibile di così non lo so fare, ho usato i tag codice.
Certo che in queste formattazioni di questo forum non è molto leggibile di suo
Qui c'è un fraintendimento: la leggibilità del codice non è un problema di formattazione (in realtà anche quello è un aspetto, ma non è questo il caso), bensì di *
come* si scrive il codice, dell'approccio stilistico che si usa, della chiarezza delle forme che si adottano, della lunghezza delle righe di codice, dell'eseguire operazioni passo per passo, dell'usare nomi significativi, dell'adottare standard di codifica uniformi, ecc. ecc..
melixo ha scritto:
Trovato!
ecco il contesto
Come dicevo appunto prima, quello che hai postato non è un contesto: è una sbrodolata di codice disordinato da debuggare a fatica dove non si capisce qual è l'obiettivo e dove non viene seguito un ordine preciso e chiaro.
Qualche esempio?
function INDIRIZZI(){
Una funzione per sua natura esegue una operazione oppure restituisce un valore di ritorno che è il calcolo o il risultato dell'operazione stessa. Il nome "INDIRIZZI" non indica nulla, oltre a essere errato poiché le convenzioni del linguaggio JavaScript richiedono l'uso del
Camel Case.
Avrai notato che le funzioni del DOM non usano il tuo standard, e hanno un nome relativamente chiaro che indica quello che fanno?
GetElementsByClassName è parlante.
INDIRIZZI no.
let indirizzi = new XMLHttpRequest();
Anche qui, siamo di fronte a un oggetto che rappresenta una richiesta, e il suo nome invece è semplicemente
indirizzi, a rischio di essere confuso con la suddetta funzione
INDIRIZZI.
let userscore = document.getElementsByClassName('user-score');
let spazio_inserimento = document.getElementsByClassName('user-details details');
let ORDER = document.querySelectorAll('input[data-ordernumber]');
let Numero_Ordine = ORDER[m].getAttribute('data-ordernumber');
Qui le variabili usano ben 3 standard: tutto minuscolo, minuscolo con underscore (si usa solo in Python), tutto maiuscolo, maiuscolo con underscore.
Il problema non è quasi l'uso di più standard, ma.... ce ne fosse almeno uno ricorrente.
La confusione nell'attribuzione di nomi uniformi denota confusione "interna", e comunque non aiuta a trovare gli errori.
spazio_inserimento[m].innerHTML += "<br><br><p id='"+userid[m].textContent+":"+Numero_Ordine+"' align='center'><b><i><u>Indirizzo Spedizione</u></i></b></p>";
Non si accoda
mai ripetutamente codice HTML a un elemento, ma ci si appoggia prima a una stringa e poi si imposta sul controllo il contenuto HTML finale, ottenuto al termine dell'accodamento: scrivere e riscrivere il contenuto HTML comporta creare e ricreare oggetti del DOM e risulta molto più lento.
Inoltre, i tag di formattazione classici (
<b>,
<u>, ecc.) sono
deprecati, ed è meglio usare classi e stili per la formattazione, che eviterebbe anche di scrivere formattazione nel codice JavaScript rendendo anche più difficile una successiva personalizzazione del markup generato. Salvo casi rari e specifici, gli stili stanno nei CSS, punto.
document.getElementById(BuyerID+":"+Numero_Ordine)
La riga qui sopra si ripeterà un migliaio di volte nello script: perché non creare ad esempio una funzione che, dato il
BuyerID e il
NumeroOrdine, faccia un controllo che siano formalmente validi (es. non vuoti e numerici) e restituisca l'elemento corrispondente del DOM con l'istruzione sopra? E' sufficiente dimenticarsi un ":" una volta affinché il programma non funzioni più, e le operazioni più ripetitive vanno incapsulate preferibilmente per poterle collaudare e, una volta testate come correttamente funzionanti, riutilizzare nel resto del codice in modo da semplificarlo.
Mi fermo qui perché analizzare tutto il resto sarebbe un lavoro estremamente lungo e improbo, ma io qui vedo grossa necessità di ulteriore studio e di usare maggior rigore nello scrivere codice, sforzandosi di semplificare, semplificare, semplificare il più possibile, pena l'insorgenza di errori magari assurdi e difficili da diagnosticare.
Comunque, alla peggio, usa il debugging e metti dei breakpoint nel codice, eseguendolo passo per passo e verificando quello che succede.
Ciao!