kostenloser Webspace werbefrei: lima-city


JS match gibt undefined zurück

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    tft-development

    Kostenloser Webspace von tft-development

    tft-development hat kostenlosen Webspace.

    hi,
    ich habe den string "(3+2)" mit match() in ein array gesplittet,
    danach wird es wieder zusammengefügt...
    wenn ich das ganze nun ausgebe, ist das erste Wort im string "undifined"

    <html><head><script language="JavaScript">
    function getstr(splitdata)
    {
    	var data;
    	for(var cnt = 0;cnt<splitdata.length;cnt++)
    	{
    		data += splitdata[cnt];
    	}
    	return data;
    }
    
    function a()
    {
    	var data = "(3+2)"
    	var splitdata = data.match(/[\+\-\*\/\(\)]|(\d+)/g);
    	data = getstr(splitdata);
    	alert(data);
    }
    </script></head><body>
    <input type=button value="a" onClick="a()">
    </body></html>


    kann mir jemand sagen warum?
    und wie ich das weg bekommen?
    wäre echt nett, danke

    Beitrag zuletzt geändert: 5.9.2013 15:55:07 von tft-development
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. g****e

    var data; // setz eine Variable mit dem Inhalt "undefined", weil du ihn nicht definiert hast
    data += "5"; // macht undefined5 draus, weil du hängst ja etwas dran

    Der Fehler ist nicht dein match, sondern dein getstr, korrigiert heißt es:
    function getstr(splitdata)
    {
    	var data="";
    	for(var cnt = 0;cnt<splitdata.length;cnt++)
    	{
    		data += splitdata[cnt];
    	}
    	return data;
    }


    Guter Tipp: Auch in Javascript ist es nicht immer schlecht, seine Daten zu preinitialisieren. Andernfalls werden die Daten auf "undefined" gestezt, weil du es ja nicht definiert hast.

    Liebe Grüße
  4. m******e

    Oder man weist der Funktion eine Variable zu, und übergibt den Inhalt erst mit dem onClick -Ereignis.
    <html><head><script language="JavaScript">
    function getstr(splitdata) {
            var data ="";
            for(var cnt = 0;cnt<splitdata.length;cnt++)
            { data += splitdata[cnt]; }
            return data;       }
    
    function a(data)     {
            var splitdata = data.match(/[\+\-\*\/\(\)]|(\d+)/g);
            data = getstr(splitdata);
            alert(data); }
    </script></head><body>
    <input type=button value="a" onClick="a('(3+2)')">
    </body></html>


    Beitrag zuletzt geändert: 5.9.2013 17:02:23 von menschle
  5. Hallo,

    eine Anmerkung ist außerdem noch zu treffen, im Moment ist die Funktion getstr auch noch nicht mehr als ein unglaublich große join-Methode. Oder um es kurz zu machen könnte man den kompletten Funktionsaufruf so ersetzen:
    function a()
    {
    	var data = "(3+2)"
    	var splitdata = data.match(/[\+\-\*\/\(\)]|(\d+)/g);
    	data = splitdata.join('');
    	alert(data);
    }


    Mit freundlichen Grüßen
  6. 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!