Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    82

    funzione su window.opener

    Ciao ragazzi ho questa funzione:

    codice:
    function getProdotto(selezionata,f) {
    		if (selezionata != undefined && selezionata != ""){
    			ar_uno=new Array();
    			ar_due=new Array();
    			ar_uno[0]=new Option('CESSIONE','C');
    			ar_uno[1]=new Option('DELEGA','D');
    			ar_due[0]=new Option('CESSIONE','C');			
    			if(selezionata=="1")array_rif=ar_uno;
    			if(selezionata=="2")array_rif=ar_uno;
    			if(selezionata=="3")array_rif=ar_uno;
    			if(selezionata=="4")array_rif=ar_due;
    			if(selezionata=="5")array_rif=ar_uno;
    			if(selezionata=="6")array_rif=ar_uno;
    			if(selezionata=="7")array_rif=ar_due;
    			if(selezionata=="8")array_rif=ar_uno;
    			for(i=0;i<f.tipo_prodotto.options.length;i++) 
    				f.tipo_prodotto.options[i]=null;
    			for(i=0;i<array_rif.length;i++) 
    				f.tipo_prodotto.options[i]=array_rif[i];
    		}
    }
    Praticamente in una finestra popup che apro dalla richiamante faccio questo:

    codice:
    getProdotto(document.modulo.elements['tipologia_' + id].value,window.opener.document.preventivodue);
    Però mi da come errore che il server ha rilevato un'eccezione in corrispondenza dell'ulima riga della funzione getprodotto.

    Ora mi chiedo se il problema è che non posso passare il parametro f in quel modo

    Vi chiedo aiuto

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    82
    Forse non sono stato abbastanza chiaro?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Un attimo di pazienza ...

    C'e una cosa che non mi e` chiara:
    La penultima riga della funzione:
    for(i=0;i<f.tipo_prodotto.options.length;i++) f.tipo_prodotto.options[i]=null;

    sembra serva per eliminare tutte le opzioni della select.
    Ma contiene una contraddizione: infatti inizi la distruzione dalla prima (che viene eliminata, poi tutti gli indici vengono scalati), poi passi alla seconda (che quindi corrisponde a quella che era inizialmente la terza), ecc.
    Inoltre la lunghezza delle opzioni non e` una costante durante il loop, per cui non si capisce quale e` il limite.

    Prova a cambiare il loop cosi`:
    for(i=f.tipo_prodotto.options.length-1; i>=0; i--)
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    82
    Ho cambiato ma mi dà sempre lo stesso errore:

    il server ha rilevato un'eccezione.

    Comunque la funzione, come era scritta prima, funzionava se richiamata ed eseguita all'interno della stessa pagina ossia passando come secondo parametro per esempio:

    codice:
    onClick="getProdotto(document.preventivodue.tipologia.value,document.preventivodue);
    Non capisco proprio

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Allora sposta la funzione nella pagina della finestra principale, e chiamala mediante
    window.opener.getProdotto(...)
    dove i parametri dovranno essere opportunamente modificati.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    82
    Ho fatto così

    codice:
     window.opener.getProdotto(document.modulo.elements['tipologia_' + id].value,document.preventivodue);
    ma mi da l'errore in quanto il secondo parametro che passo alla funzione(f)dove c'è il riferimento al form, non viene recuperato
    quindi mi dice che gli oggetti sono nulli

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    passa il nome dell'oggetto, e poi recuperalo in base al nome.

    Se l'oggetto e` un form, puoi fare:

    function getProdotto(selezionata,f) {
    f = document.forms[f];
    .. ecc. ...


    Ho supposto che il nome che passi corrisponda all'attributo name del tag <form>
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    82
    ma come lo devo passare il nome del form?

    Ho provato in tutti i modi ma non me lo passa!!

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Devi passarlo come stringa:

    Nella popup:
    window.opener.getProdotto(document.modulo.elements['tipologia_' + id].value, "preventivodue");

    Nella principale:
    function getProdotto(selezionata,f) {
    alert("f(stringa): "+f);
    f = document.forms[f];
    alert("f(oggetto): "+f.name);
    alert("selezionata(stringa): "+selezionata);

    if (selezionata != undefined && selezionata != ""){
    ...
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.