Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    78

    I simboli di "maggiore" e "minore" nelle stringhe

    Domanda semplice semplice, a sapere la risposta. Sto usando un replace me non mi accetta i simboli di maggiore e minore, sia che scriva con o senza backslash. Cioè non mi funzionano entrambe le scritture

    /</g

    /\</g

    Quale diavolo è la sintassi da usare, che proprio non capisco?

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    A me funziona con entrambe le versioni, posta il resto dello script.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    78
    Non credevo di dover arrivare a tanto, nel senso che non volevo far perder più che tanto tempo, comunque eccolo:

    codice:
    document.getElementsByClassName = function(clsName){
        var retVal = new Array();
        var elements = document.getElementsByTagName("*");
        for(var i = 0;i < elements.length;i++){
            if(elements[i].className.indexOf(" ") >= 0){
                var classes = elements[i].className.split(" ");
                for(var j = 0;j < classes.length;j++){
                    if(classes[j] == clsName)
                        retVal.push(elements[i]);
                }
            }
            else if(elements[i].className == clsName)
                retVal.push(elements[i]);
        }
        return retVal;
    }
    
    function addSmiley(dummy){
      var d = [], i=0, def = ['post-body','comment-body'];
    
      for(i=0;i<def.length;i++){
    	var content = document.getElementsByClassName(def[i]);
    	for(var j=0;j<content.length;j++)
    		d.push(content[j]);
    	}
    
      for(i=0;i<arguments.length;i++){
    	var content = document.getElementsByClassName(arguments[i]);
    	for(var m=0;m<content.length;m++)
    		d.push(content[m]);
      }
    
      for(var i=0;i<d.length;i++){
            d[i].innerHTML = d[i].innerHTML.replace(/\s<:d>/g, '  ');
            d[i].innerHTML = d[i].innerHTML.replace(/\s:-?>)/g, '  ');
        }
    }
    
    function addLoadEvent(func) {
      var oldonload = window.onload;
      if (typeof window.onload != 'function') {
        window.onload = func;
      } else {
        window.onload = function() {
          oldonload();
          func();
        }
      }
    }
    
    addLoadEvent(function(){
    	addSmiley();
    });
    Se nel replace uso altri simboli funziona, ma quando uso < e >, con o senza backslash, non mi funziona più niente e non sostituisce neanche gli altri insiemi di simboli, quelli senza < e >.

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    La prima funziona, la seconda RegExpr e' sbagliata... usa: /\s:-\?> \)/g

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    78
    Hai ragione ma non era quello, ho sbagliato a scrivere qui, nel codice che usavo era scritto giusto.

    Non so se può aiutare ma mi sono accorto che su Safari vengono sostituite correttamente le stringhe che contengono il > ma non quelle che contengono <, mentre su FF né le une né le altre.

    Inoltre succede che, solo per le stringhe:

    /\s:-?&/g associata all'immagine 1

    /\s:-?</g associata all'immagine 2

    /\s:-?>/g associata all'immagine 3

    viene sostituita un'immagine, ma sempre la 1, seguita dalle scritte, rispettivamente, «amp;» «lt;» «gt;».

    Già che ci sono, è possibile far riconoscere due stringhe diverse che iniziano allo stesso modo?
    Cioè se voglio sostituire a /\s:-?\)/g un'immagine e a /\s:-?\)\)/g un'altra immagine, come faccio? Adesso come adesso mi viene sempre fuori la stessa immagine del primo caso, però seguita da ) nel secondo caso.
    L'unico modo che mi è venuto in mente è usare

    /\s:-?\)\s/g

    /\s:-?\)\)\s/g

    ma non funziona se la stringa si trova a fine frase senza altri spazi dopo.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    78
    Ho dimenticato di mettere l'elenco completo delle stringhe che non funzionano.

    Attenzione che con -? intendo proprio quello e non -\?.

    Ho provato sia col backslash sia senza, nessuna funziona con FF, alcune funzionano con Safari (lo metto tra parentesi):

    codice:
    /\s:">/g            per   :">                       (funziona con Safari)
    
    /\s=d>/g            per   =d>                       (funziona con Safari)
    
    /\s:-?\)>-/g        per  :-)>-     o per   :)>-     (funziona con  Safari)
              
    /\s>:-?\//g         per  >:-/      o per   >:/      (funziona con Safari) 
    
    /\s>:-?\)/g         per  >:-)      o per   >:)      (funziona con Safari) 
    
    /\s8-?>/g           per  8->       o per   8>       (funziona con Safari)
    
    /\s>:-?p/ig         per  >:-p      o per   >:p      o per  >:-P     o per   >:P  (funziona con Safari)
    
    /\s<:-?p/ig         per  <:-p      o per   <:p      o per  <:-P     o per   <:P
    
    /\s<\):-?\)/g       per  <):-)    o per   <):)
    
    /\s<-?\)/g          per  <-)       o per   <)  
           
    /\s\[-?0</g         per  [-0<      o per   [0<
    
    /\s<:d>/g           per  <:d>  
    
    /\s:-?&/g           per  :-&       o per  :&     (questo sostituisce l'immagine ma dopo ci scrive «amp;» sia in Safari sia in FF)
    
    /\s:-?>/g           per  :->       o per  :>     (funziona con Safari, su FF sostituisce l'immagine di :-& e  dopo ci scrive «gt;»)
     
    /\s:-?</g           per  :-<       o per  :<     (sostituisce l'immagine di :-& e dopo ci scrive «lt;» sia su Safari che su FF)
    Lo so che potrei semplicemente evitare di usare i simboli incriminati, ma mi piacerebbe capire perché la faccenda dà simili comportamenti bizzarri.

    P.S: Noto che qui avete il problema opposto, gli smiley che appaiono quando non devono...

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.