Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107

    [JS] Problema assurdo di esecuzione

    Salve a tutti!

    PAGINA1 : presenti una serie di select (numero dinamico) e la funzione per popolarle

    POPUP1 : richiamato da PAGINA1, chiama la funzione in pagina 1 per popolarne le select

    POPUP2 : Come popup 1... ma per un'altra select.


    Problema : quando loopo un operazione di questo tipo :
    codice:
    while (numero_inserito) 
    { window.open(popup1); window.open(popup2); }
    Mi genera solamente l'ultima select. Perchè? Perchè è troppo veloce!!!

    IN pratica se mettessi un ALERT su ogni giro di loop, me le popolerebbe correttamente!!!

    Come posso fare?
    Guybrush Threepwood

  2. #2
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    può esistere una funzione che blocchi proprio l'esecuzione temporanea dello script come fa un'alert?
    Guybrush Threepwood

  3. #3
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    potremi magari fermare il puntatore del mouse per 1 secondo dopo l'alert... sapete come fare?
    Guybrush Threepwood

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    devi postare il codice (è essenziale altrimenti non si capisce nulla) e inoltre

    - devi specificare su quale delle tre pagine si verifica l'errore
    - spiegare qual è il comportamento corretto che ti aspetti
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    Allora.. mi spiego meglio... il problema l'ho individuato ma un po strano (Anche se comprensibile).

    Faccio un esempio

    PAGINA1
    SELECT1 : Elenco dei clienti
    SELECT2 : venditori del cliente selezionato
    SELECT3 : acquirenti del cliente selezionato

    Quando seleziono il CLIENTE dalla SELECT1, javascript apre un POPUP che , richiamando la funzione AGGINGI() della pagina principale, popola le 2 select. Per popolare entrambe le select faccio 2 window.open().

    codice:
    function aggiungi(nome,valore){
    sel.options[sel.options.length]=new Option(nome,valore);
    RITARDO(300);
    }
    In alcuni casi (a seconda degli articoli acquistati) ho dinamicamente 3 o 4 serie di SELECT2 e SELECT3 per cui vado a loopare le window.open.

    codice:
    while (esiste_cliente[i])
    {
       window.open(popup1);
       window.open(popup2);
    }

    Che succede : la funzione aggiungi è un po lenta e ci mette qualche secondo x eseguirsi.
    Problema : se non interrompo con un alert ogni ciclo di loop, non fa in tempo a caricare le select e lo fa solamente sull'ultima serie.

    Per cui devo mettere un alert x ogni ciclo di loop...... e sperare che non venga premuto subito ma che ci si metta circa 1 secondo per premere OK

    Adesso va, ho inserito un delay fisso di 300ms nella funzione aggiungi. In questo modo (lasciando comunque l'alert) funziona abbastanza bene.

    In pratica il problema sta nel fatto che durante la loop AGGIUNGI() non fa in tempo ad eseguirsi completamente, a me non che non si fermi l'elecuzione con un alert per qualche secondo...
    Guybrush Threepwood

  6. #6
    codice:
    while (esiste_cliente[i])
    {
       setTimeout("window.open(popup1);window.open(popup2);",200);
    }
    Il numero rappresenta i millisecondi di intervallo...

    spero ti possa andar bene

    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  7. #7
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    sto provando così... però nella funzione che fa i popup mi dice "x is not defined".

    codice:
    function fai_uno(x,y)
    {
    setTimeout"window.open(x,'Rappresentante','width=200,height=200,resizable=no,menubar=no,toolbar=no,location=no,scrollbars=nostatus=no');",200);
    }
    nella funzione passo una x del tipo 'pagina.php?c=1&x=2'
    Guybrush Threepwood

  8. #8
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    risolto.. ma il problema rimane.

    E' la funzione aggiungi che da problemi... ma li non ci posso mettere il settimeout perchè non riuscierebbe a passare i valori
    Guybrush Threepwood

  9. #9
    perchè no?

    codice:
    function aggiungi(nome,valore){
     setTimeout("sel.options[sel.options.length]=new Option('"+nome+"','"+valore+"');",300);
    }
    così dovrebbe andare

    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  10. #10
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    anche con i timeout ho sempre lo stesso problema... se non metto un alert a fermare una attimo l'esecuzione non riesce a generare il tutto (se non l'ultima volta del loop)...
    Guybrush Threepwood

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