kostenloser Webspace werbefrei: lima-city


Falls Teil einer Funktion ausgeführt, Wert + 1 rechnen.

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    moneyprojekt

    moneyprojekt hat kostenlosen Webspace.

    Hey, ich habe folgende Funktion:

    function simplebb(text) {
    
    text = htmlformat(text);
    
    	var url = 0;
    	var url1 = 0; 
    
        return text
            .replace(/\[url\](.*?)\[\/url\]/g, '<a href="$1">$1</a>')
            .replace(/\[url=([^\]]*?)\](.*?)\[\/url\]/g, '<a href="$1">$2</a>')
    }


    Ich habe also eine Variable für url und url1. Sobald man
    [url=test.net]test[/url]
    oder
    [url]test.net[/url]
    eingibt, sollte entweder url1 oder url +1 gezählt werden, damit ich weiss, wieviel mal welches von beiden ausgeführt wird. Wisst ihr wie ich das machen kann, oder habt ihr bessere Ideen, um festzustellen wieviel mal was ausgeführt wird?

    Ich könnte zwar für beide eine eigene Funktion machen, und sobald diese ausgeführt wird am ende noch die Variable +1 zählen, aber da wirds sicher bessere Möglichkeiten geben.

    Beitrag zuletzt geändert: 18.6.2012 22:01:39 von moneyprojekt
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. m******************r

    Hallo!

    Versuchs mal mit match.
    Liefert dir ein Array von Ergebnissen und anhand dessen Länge kannst du dann feststellen, wie oft was verwandt wurde.

    Lg
  4. Autor dieses Themas

    moneyprojekt

    moneyprojekt hat kostenlosen Webspace.

    markus-niederbrucker schrieb:
    Hallo!

    Versuchs mal mit match.
    Liefert dir ein Array von Ergebnissen und anhand dessen Länge kannst du dann feststellen, wie oft was verwandt wurde.

    Lg


    Mit der Funktion kann ich nach einem bestimmten String zb "Auto" suchen lassen, und es liefert mir die anzahl?

    Bei mein Auto ist das beste Auto der welt -> 2?
  5. m******************r

    Nicht ganz, es würde dir ["Auto", "Auto"] liefern. Mit .length kannst du die Anzahl der Elemente im Array dann abfragen und hast somit die Zahl der 'Autos' im Text .

    Lg
  6. Autor dieses Themas

    moneyprojekt

    moneyprojekt hat kostenlosen Webspace.

    markus-niederbrucker schrieb:
    Nicht ganz, es würde dir ["Auto", "Auto"] liefern. Mit .length kannst du die Anzahl der Elemente im Array dann abfragen und hast somit die Zahl der 'Autos' im Text .

    Lg


    Okey danke! Bei mir sinds aber keine Wörter, haben also keinen Abstand. Ich muss test.de prüfen. Geht das, wenn dazwischen kein Abstand ist?
  7. m******************r

    Klar, du kannst alles Mögliche damit Abfragen. In dem Beispiel würden auch z.B. Automat und Autobus gezählt werden.
    Kannst dir ja das hier mal durchlesen, bzw. hast du ja eh schon mit regulären Ausdruck gearbeitet, wie ich sehe, das läuft bei match gleich!
  8. Du testest ja mit Regex, da kannst Du selbst impementieren, was Du brauchst.
    Wenn Du Wörter haben willst, kriegst Du Wörter;
    wenn Du nach bestimmten Mustern, wie zum Beispiel der TLD suchen willst, kannst Du das auch einfach machen.


    Was ich aber nicht verstehe, ist warum Du überhaupt zählen willst, wie oft das vorkommt. Um nur eine bestimmte Menge zuzulassen?

    Beitrag zuletzt geändert: 18.6.2012 22:55:41 von tobiworlds
  9. Autor dieses Themas

    moneyprojekt

    moneyprojekt hat kostenlosen Webspace.

    markus-niederbrucker schrieb:
    Klar, du kannst alles Mögliche damit Abfragen. In dem Beispiel würden auch z.B. Automat und Autobus gezählt werden.
    Kannst dir ja das hier mal durchlesen, bzw. hast du ja eh schon mit regulären Ausdruck gearbeitet, wie ich sehe, das läuft bei match gleich!


    Okey, danke! Einfach so als Test funktionierts super. Wenn ich einen Alert mache, und die Variable ausgebe, bekomm ich die richtige Anzahl, aber sobald ich es als Text ausgeben will, gibts nichts aus. Dies ist meine ganze Funktion:

    function doformat() {
                    var src = document.getElementById('source-text'); //Textfeld für die eingabe.
                    var dst = document.getElementById('formatted-text'); //Textfeld in dem die der Text ausgegeben werden soll.
                    var chr = document.getElementById('visible-chars'); //Textfeld in dem die Textlänge ausgegeben werden soll.
                    var chr1 = document.getElementById('link1'); //Textfeld in dem die Anzahl ausgegeben werden soll.
                    var chr2 = document.getElementById('link2'); //Textfeld in dem die Anzahl ausgegeben werden soll.
                    var Url11	= src.match(/\[url\](.*?)\[\/url\]/g); //Für den Url Typ 1 die Anzahl
                    var Url22	= src.match(/\[url=([^\]]*?)\](.*?)\[\/url\]/g); //Für den Url Typ 2 die Anzahl
                    dst.innerHTML = htmltext.value; //Gibt Text aus
                    chr.innerHTML = html2plain(htmltext).length; //Gibt Textlänge aus
                    chr.innerHTML = Url11; //Gibt Link Anzahl 1 aus
                    chr.innerHTML = Url22; //Gibt Linikanzahl 2 aus
                    
    
      
    
    
                }


    Html Felder:
                <span id="formatted-text"></span>
                <span id="link1"></span>
                <span id="link2"></span>
    
               <textarea id="source-text" name="Text"onkeyup="doformat();" rows="9" cols="41"></textarea>


    Funktioniert nicht, könnt ihr mir helfen?
  10. m******************r

    Also, ich seh da mal zwei wesentliche Probleme:

    dst.innerHTML = htmltext.value; //Gibt Text aus
        chr.innerHTML = html2plain(htmltext).length; //Gibt Textlänge aus

    Woher kommt 'htmltext'? Globale Variable? Oder soll das die textarea sein?

    Und hier:
    chr.innerHTML = html2plain(htmltext).length; //Gibt Textlänge aus
        chr.innerHTML = Url11; //Gibt Link Anzahl 1 aus
        chr.innerHTML = Url22; //Gibt Linikanzahl 2 aus

    überschreibst du zweimal den Text, den du vorher hineingeschrieben hast. Wenn du alle drei Sachen da drin stehen haben willst, solltest du zumindest += statt = verwenden. Und für die Anzahl solltest du Url11.length und Url22.length verwenden.

    Vielleicht läufts dann.

    lg
  11. Autor dieses Themas

    moneyprojekt

    moneyprojekt hat kostenlosen Webspace.

    Woher kommt 'htmltext'? Globale Variable? Oder soll das die textarea sein?

    Oh sorry, hab da eine Zeile gelöscht, die die htmltext Variable definiert, das bisschien verwirrend wäre, wegen anderen Funktionen die ich definiert habe.

    überschreibst du zweimal den Text, den du vorher hineingeschrieben hast

    Nochmal sorry, hab die Zeilen davor gelöscht, und mit alert ausprobiert, obs etwas ausgibt, und im Forum noch schnell rein editiert. :P

    So hab ichs:

    function doformat() {
                    var src = document.getElementById('source-text');
                    var dst = document.getElementById('formatted-text');
                    var chr = document.getElementById('visible-chars');
                    var chr1 = document.getElementById('link1');
                    var chr2 = document.getElementById('link2');
                    var htmltext = simplebb(src.value);
                    dst.innerHTML = htmltext;
                    chr.innerHTML = html2plain(htmltext).length /50;
                    
    
                    var Url11	= src.match(/\[url\](.*?)\[\/url\]/g);
                    var Url22	= src.match(/\[url=([^\]]*?)\](.*?)\[\/url\]/g);
    
                    chr1.innerHTML = Url11;
                    chr2.innerHTML = Url22;
    
                }
  12. m******************r

    Ok, so is' schon klarer ;-)

    Allerdings bleibt noch .length an url11 bzw. url22, oder gleich an die match-Funktionen anzuhängen.

    Darüber hinaus glaube ich, auch wenn ich da kein Profi bin, du hast in deinen Regex-Ausdrücken zumindest ein paar Unschönheiten:
    url11: bei *? solltest du das ? weglassen, weil du zwischen den [url]-tags nicht bloß 0 oder 1 Zeichen haben willst, nehm ich an. Bei url22 selbiges, außerdem ist ^ hier ziemlich sicher falsch, da dieses Zeichen den Beginn markiert.

    Besser wäre:
    url11:
    /\[url\].*\[\/url\]/gi

    url22:
    /\[url=.*\].*\[\url\]/gi


    Bin aber wie gesagt kein Regex-Profi, gibt also sicher bessere Wege.

    Beitrag zuletzt geändert: 19.6.2012 21:46:56 von markus-niederbrucker
  13. Autor dieses Themas

    moneyprojekt

    moneyprojekt hat kostenlosen Webspace.

    Regex funktioniert, aber danke für die Verbesserung. Kanns atm nicht ausprobieren, hab ein unschönes Problem.
  14. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!