Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    176

    chi mi risolve un bug in questo script?

    La funzione è la seguente, serve per ricavare la querystring, il problema è che quando nella querystring non vi è alcun parametro restituisce un errore: n.length non è un oggetto.

    if(self.location.search.substring(0) != "");
    {

    var flag = 0;
    var strQS = self.location.search.substring(1);
    n = strQS.match(/=/gi);
    arrValues = new Array(n.length);
    for (i = 0; i < n.length; i++)
    {
    if (i == n.length - 1)
    {
    StartValue = strQS.indexOf("=", flag);
    arrValues[i] = strQS.substring(StartValue + 1, strQS.length);
    }
    else
    {
    StartValue = strQS.indexOf("=", flag);
    EndValue = strQS.indexOf("&", flag);
    arrValues[i] = strQS.substring(StartValue + 1, EndValue);
    flag = EndValue + 1;
    }
    }

    if (arrValues[0] == 1) {
    document.form1.submit();
    }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    il primo if dovrebbe essere:

    if(self.location.search != "") {

    altrimenti il tuo programma va ad applicare metodi di stringa a qualcosa che una stringa non e` (e ti da` errore).

    Comunque io userei document.location.search , altrimenti in caso di frame non sai cosa ti prende.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao diego78,

    un bug è il punto e virgola ( nella prima if che non ci deve essere

    per leggere i parametri passati in querystring potresti usare un metodo più semplice... io mi sono fatto questa funzioncina
    codice:
    function objQueryString(qs){ 
    	dic = new Array()
    	if(!qs)	qs = location.search
    	if(qs!=''){
    		qs = qs.qs.replace(/^\?/,'')
    		aQs = qs.split('&')
    		txt = ''
    		for(i=0;i<aQs.length;i++){
    			aPV = aQs[i].split('=')
    			dic[aPV[0]]=unescape(aPV[1])
    		}
    	}
    	return dic
    }
    da usare ad esempio così
    codice:
    qs = objQueryString()
    for(x in qs) 
    	document.write(x+': '+qs[x]+'
    ')
    o se vuoi vedere se esiste il parametro pippo
    codice:
    qs = objQueryString()
    if(qs['pippo'])
    	document.write('qs[\'pippo\']='+qs['pippo'])
    se ti possono essere utili
    Aloha

  4. #4
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Originariamente inviato da Mich_
    il primo if dovrebbe essere:

    if(self.location.search != "") {

    altrimenti il tuo programma va ad applicare metodi di stringa a qualcosa che una stringa non e` (e ti da` errore).

    Comunque io userei document.location.search , altrimenti in caso di frame non sai cosa ti prende.

    Ciao
    Michele
    per la if mi ha preceduto (confermando) Mich_
    Nel caso di frame con la mia funzioncina si può fare così per prendere la querystring del frameset
    codice:
    qs = objQueryString(top.location.search)
    for(x in qs) 
    	document.write(x+': '+qs[x]+'
    ')

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.