Visualizzazione dei risultati da 1 a 3 su 3

Discussione: concatenamento

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929

    concatenamento

    ciao
    ho una funziona alla quale devo passare il nome di un form in maniera dinamica ho fatto cosi
    ma non funziona
    codice:
    <script>
    function estensione(questo)
    {
    	var f=document.frmupload+questo;
    	var um = f.elements["img1"].value;
    	var pezzi = um.split(/[\\\/]/); 
    
    	var nom_est = pezzi[pezzi.length-1].split(/\./);
    
    	if(nom_est[1] != "pdf") 
    	{
    		window.alert("ATTENZIONE IL FILE CHE SI STA' CERCANDO DI CARICARE NON E' VALIDO");
    		f.reset(); 
    	}else{
    	pezzi[pezzi.length-1] = pezzi[pezzi.length-1].toUpperCase();
    	f.hiddenField.value = "../public/press/"+nom_est[0]+"."+nom_est[1];
    	}
    
    }
    </script>
    gli ho passato la stringa sia cosi
    codice:
    <input name="img1" type="file" class="questo_input" id="img1" onChange="estensione('19')">
    che cosi
    codice:
    <input name="img1" type="file" class="questo_input" id="img1" onChange="estensione(19)">

    Grazie mille

  2. #2
    Devi usare eval() o getElementById() quando ti riferisci ad un oggetto a partire dalla concatenazione di una o più stringhe e di una variabile. JavaScript non capisce cose come:

    var f = "document.form" + n + ".elements.length";

    dove n è un numero o una stringa. Questo perché l'oggetto form è appunto di tipo Object, mentre concatenando stringhe e variabili, ottieni una stringa (oggetto di tipo String). Di conseguenza, o usi eval() (che non ti consiglio perché consuma parecchie risorse e non è un metodo standard), oppure attribuisci un id al form su cui vuoi che la funzione operi e lo recuperi con document.getElementById(ID_ELEMENTO). getElementById() è molto versatile, perché ti permette ad es. di accedere direttamente ad un elemento (a cui hai attribuito un id) del form senza passare per l'oggetto form che lo contiene (come invece dovevi fare con document.NOMEFORM.NOMECAMPO). Inoltre, getElementById() permette di evitare l'uso di eval() perché accetta come argomento sia stringhe che variabili e riesce a concatenarle trasformandole automaticamente in un oggetto di tipo Object. Scrivendo ad es.:

    var txt = document.getElementById("testo" + n).value;

    dove n è un numero o una stringa, puoi accedere direttamente al campo di testo che ha un attributo id="testoQUALCOSA" (e nota che non passi per il form che contiene il campo di testo).

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    ottima spiegazione, grazie mille ho risolto!


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.