Andreas Mueck: Hmm... Holzbrett vor dem Kopf ???

Hallo liebes Forum,

möglicherweise habe ich schon einen ganzen Wald vor meinem Kopf, denn ich kann folgendes Problem nicht mehr lösen:

Folgender Eintrag steht in einer HTML-Datei:

[...

<script language="javascript" src="mailme.js" type="text/javascript">
</script>

<body>
<A HREF="javascript:mails[0].sendeMail()">Message senden</A>
</body>

...]

Die Externe MAILME.JS sieht wie folgt aus:

var mails = new Array();

mails[0] = new mailObjekt('andreas.mueck@mfh-iserlohn.de','Die Seite ist ja nicht zum aushalten *fg*',' Hier kommt mein Kommentar :');
mails[1] = new mailObjekt('andreas.mueck@mfh-iserlohn.de','Ich finde die Seite gut !','Hier kommt mein Lob :');

function mailObjekt(to, su, bo) {

this.to = to    // AN:  
this.su = su    // BETREFF:  
this.bo = bo    // NACHRICHT:  
  
this.sendeMail = sendeMail;  

}

function sendeMail() {

var urlString = this.to;  
  
if (this.su) {  

urlString  = formatiereMailurl(urlString);
       urlString  = urlString + "subject=" +(this.su);
        }

if (this.bo) {   

urlString  = formatiereMailurl(urlString);
       urlString  = urlString + "body=" +(this.bo);
}

// alert(urlString);  
  
location='mailto:' +urlString;  

}

function formatiereMailurl(formatStr) {
    
    var formatStr;
    
    if (formatStr.indexOf("?") == -1)

formatStr = formatStr + "?"
    else
       formatStr = formatStr + "&";

return formatStr;
}

Nun das Problem :

Wenn der Aufruf im IE 4.0+ erfolgt, dann erscheint die Meldung :

Zeile   : 42
Zeichen : 5
Fehler  : 'undefined' ist kein Objekt

Der Aufruf im 'Bugscape' NN 4.x+ verläuft korrekt.

Any ideas ? *Das Brett fängt langsam an zu schmerzen*

Holzigen Dank
Andreas

  1. Hallo liebes Forum,

    möglicherweise habe ich schon einen ganzen Wald vor meinem Kopf, denn ich kann folgendes Problem nicht mehr lösen:

    Folgender Eintrag steht in einer HTML-Datei:

    [...

    <script language="javascript" src="mailme.js" type="text/javascript">
    </script>

    <body>
    <A HREF="javascript:mails[0].sendeMail()">Message senden</A>
    </body>

    ...]

    Die Externe MAILME.JS sieht wie folgt aus:

    var mails = new Array();

    mails[0] = new mailObjekt('andreas.mueck@mfh-iserlohn.de','Die Seite ist ja nicht zum aushalten *fg*',' Hier kommt mein Kommentar :');
    mails[1] = new mailObjekt('andreas.mueck@mfh-iserlohn.de','Ich finde die Seite gut !','Hier kommt mein Lob :');

    function mailObjekt(to, su, bo) {

    »»  
    »»  this.to = to    // AN:
    »»  this.su = su    // BETREFF:
    »»  this.bo = bo    // NACHRICHT:
    »»  
    »»  this.sendeMail = sendeMail;

    }

    function sendeMail() {

    »»  
    »»       var urlString = this.to;

    braucht man in der Methode das this ? Ich trau mich nicht sagen ob das geht oder falsch ist!

    »»  if (this.su) {
    »»             urlString  = formatiereMailurl(urlString);

    urlString  = urlString + "subject=" +(this.su);
            }

    Du löscht jedesmal den urlString! Wolltest wahrscheinlich schreiben urlString += .... ;-)

    »»  if (this.bo) {

    urlString  = formatiereMailurl(urlString);

    »»              urlString  = urlString + "body=" +(this.bo);
    »»  }

    Wozu die Klammern am Schluss? haben die einen tieferen Sinn, den ich noch nicht kenne ?
      
    »»  // alert(urlString);
    »»  location='mailto:' +urlString;

    }

    was geschieht weiter mit location ? return location ?

    function formatiereMailurl(formatStr) {
        var formatStr;
        if (formatStr.indexOf("?") == -1)
           formatStr = formatStr + "?"
        else
           formatStr = formatStr + "&";
        return formatStr;
    }

    Any ideas ? *Das Brett fängt langsam an zu schmerzen*

    Wie gesagt, es sind Ideen, bin aber auch kein JS-Profi !

    Du könntest das ganze natürlich auch ein bischen weniger objektorientiert lösen: Der Funktion die Zahl
    für das mail-Objekt übergeben, und einfach ein normales Stringobjekt draus machen!
    Geht meiner Meinung nach einfacher :-)

    keep it simple ;-)
    Bernhard

    1. Hallo Bernhard,

      erst einmal Danke dafür, dass Du Dir die Zeit genommen hast ein paar Ideen einzustreuen :-)

      Ich versuche es mal mit weniger Aufwand...
      *fluch%$§"%$§"$%"$$%*

      Einen schönen Abend noch ;-)

      Bis dahin
      Andreas