1

(11 Antworten, geschrieben in JavaScript - Hilfe)

Moin

für mein Verständnis ist das ein Fehler in firefox,
denn sobald event als argument übergeben wird, geht's:

<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<script>
 function Init(e){
    links = document.getElementById("actions").getElementsByTagName("li");

    for (i = 0; i < links.length; i++){
        links[i].onclick = function(o){
                                        Act(e,this,o)
                                      };
    }
   }

 function Act(e, li, o){
    alert(li.innerHTML);
    alert(e)
    document.all ? event.cancelBubble = true :
                   o ? ( o.stopPropagation(), o.preventDefault()) : 0
}


</script>
</head>
<body onload="Init(event);">
 <div onclick="alert('Soll sich nicht melden');">
    <ul><!-- So funkt der Aufruf in beiden Browsern -->
        <li onclick="Act(event, this);">Aktion 10</li>
    </ul>
    <ul id=actions> <!-- Fehlermeldung in FF: event is not defined -->
        <li>Aktion 1</li>
        <li>Aktion 2</li>
        <li>Aktion 3</li>
        <li>Aktion 4</li>
        <li>Aktion 5</li>
    </ul>

</div>
</body></html>

cancelBubble kennt firefox nicht.


gruß

matho

2

(11 Antworten, geschrieben in JavaScript - Hilfe)

Moin,

meinst Du sowas?:

<html><body>
<script language="javascript">

function globalFunction(){

    var calculate = function(idx){
        alert(idx);
    }

    var irgendwelche_Daten = {  fix :  'hoppla, jetzt komm ich',
                               foxi :  2007,
                               lupo :  function(x,y){ return x*y }
                             }

    this.init = function(){
         var fields = document.getElementsByTagName("button");

         for (var i in fields)
             { fields[i].c = fields[i].onclick
               if ( fields[i].id == 'btn1') fields[i].a = irgendwelche_Daten.fix
               if ( fields[i].id == 'btn2') fields[i].a = irgendwelche_Daten.foxi
               if ( fields[i].id == 'btn3') fields[i].a = irgendwelche_Daten.lupo(47, 11)
             }

         for (var i in fields)
             fields[i].onclick = function(){ if(this.c) this.c(); calculate( this.a ) }
    }

    this.init();
}

window.onload = function(){
    var ncal = new globalFunction();
}
</script>

<form>
<button id="btn1">Button 1</button>
<button id="btn2">Button 2</button>
<button id="btn3">Button 3</button>
</form>
</body></html>

gruß

matho

3

(11 Antworten, geschrieben in JavaScript - Hilfe)

Moin,

mach mal so:

         for (var i in fields)
             fields[i].onclick= function(){ if(this.c) this.c(); calculate( this.id ) }

gruß

matho

4

(3 Antworten, geschrieben in JavaScript - Hilfe)

Moin,

klar, das mit dem fast tot-guggeln kann ich verstehn,
ich bekomme mit der Suche:
        javascript cookies
rund 1.100.000 Einträge, selbst wenn ich lediglich
deutsche sites anfrage.
Im gesamten web sind's dann Stücker 27.400.000, und
das in 0,46 Sekunden - whoaw!

Was ich nicht verstehn kann:
wieso einem da auch jeder Ansatz fehlt, um voran zu
kommen.

<html>
<head>
<title>cookie</title>
<script>
var D = new Date()
    D.setTime( D.getTime() + ( 7 * 2592000000 ) )   // id est 7 monate

    onload = function(){ var d = document
                         // alert( d.cookie ) // zum cookiekukken

                         if ( d.cookie ){    // ist da ein cookie
                            d.images[0].src = '../images/q_orange.gif'
                            d.images[0].alt = 'neu'
                            d.body.style.background = 'brown'
                         }
                         else{               // oder ist da kein cookie
                            d.images[0].src = '../images/q_gruen.gif'
                            d.images[0].alt = 'alt'
                            d.body.style.background = 'antiquewhite'

                            d.cookie = 'name=rumpelstilz'  // dann machen wir eben eins
                            d.cookie = 'expires=' + D.toGMTString()  // und sagen ihm, wie
                         }                                           // lange es halten soll
                       }
</script>

</head>
<body>
    <image src='' width=400 height=300 alt=''>
</body>
</html>

gruß

matho

5

(11 Antworten, geschrieben in JavaScript - Hilfe)

Moin

function globalFunction(){

    var calculate = function(){
        alert('doSomeThingInGlobalFunction');
    }

    this.init = function(){
         var fields = document.getElementsByTagName("input");

         for (var i in fields) fields[i].c = fields[i].onchange

         for (var i in fields)
         fields[i].onchange = function(){ if(this.c) this.c(); calculate() }
    }

    this.init();
}

gruss

matho

6

(11 Antworten, geschrieben in JavaScript - Hilfe)

Moinmoin

vielleicht hilft Dir das weiter:

<html>
<head>
<title>position</title>
<script>

var a = open('','','height=200,width=200,left=200,top=200')

    alert( ( a.screenX || a.screenLeft ) + '\n\n' +
           ( a.screenY || a.screenTop  ) )

    if( !window.opera ) a.close()

</script>
</head>
<body>

</body>
</html>

gruß

matho

7

(3 Antworten, geschrieben in JavaScript - Hilfe)

N'Abend Axel,

vollständiger isses. Ich habe allerdings browserspezifisches
Verhalten hier noch nicht erlebt. Bei andren events hingegen
schon.
Wenn's Dir wieder einfällt, welche browser sich da beschweren,
sag' mal Bescheid. Das kommt dann in meine ständig wachsende
Kuriositätensammlung.
Nach dem gesunden Menschenverstand sollte es eigentlich nicht
nötig sein, beim onload noch das window dazuschreiben zu müssen,
alldieweil - wohin sollte denn sonst geladen werden, wenn nicht
in eben jennes?
Vorstellen kann ich mir Schwierigkeiten in browsern, die generell
mucken beim Darstellen von frames, aber das ist lediglich sone
Vermutung.

gruß

matho

8

(3 Antworten, geschrieben in JavaScript - Hilfe)

Moin,

meinst Du so etwas?:

<html>
<head>
<title>onfocus</title>
<script>

var d = document,
    H = { A : 'Hilfe A',
          C : 'Hilfe C'
        }


onload = function()
         { for ( var i = 0, ip; i < (ip = d.getElementsByTagName('input')).length; i++ )
           ip[i].onfocus = function()
                           { if( H[this.name] ) alert( H[this.name] )
                           }
         }
</script>
</head>
<body>
<form name=f1 action=#>
<input name=A />
<input name=B />
</form>

<form name=f2 action=#>
<input name=C />
<input name=D />
</form>
</body>
</html>

gruß

matho

N'abend

ich weiß en detail nicht, wie sich regexes in Access verhalten, aber ich
glaube, ziemlich ähnlich zu denen in javascript.
D.h., es gibt dann doch einige Dinge, die zwar in perl, oder auch zB. python
relativ locker gehn, aber hier nicht.
So ist zB. das "sone Sache" mit der Formulierung beliebiger Ober - bzw. Untergrenzen
im pattern selbst, oder auch dem Aufspüren von Verdopplungen.

Ein grober Versuch einer Erklärung (genauer geht's momentan nicht, alldieweil
Ferien sind und das Haus voller Kinder):


<html>
<head>
<title>regex</title>
<script>

var    og =  '11',
       ug =  '-25',

     test = [" 10 +  +9 + 11 +  -9 + -8 ",
             " 10 +  +9 + 11 +   9 + -8 ",
             " 10 +  + 9 + 11 +   9 + -8 ",
             " 10 +  +9 + 11 +  19 + -8 ",
             " 10 +  +9 + 11 + -77 + -8 ",
             " -7 + -17",
             " -7 + - 17",
             " rumumbel ",
             " 00 "
            ],


       rg = /^\s*[-+]?\d\d*\s*(\+\s*[-+]?\d\d*\s*)*$/,
       rz = /[-+]?\d\d*/g,

       // es folgt das gleiche in grün, nochmal ausführlicher und diesmal unter
       // Verwendung des Konstruktors  =>  new RegExp( pattern [, option[s]] )

       rg  =  new RegExp( '^\\s*[-+]?\\d\\d*\\s*(\\+\\s*[-+]?\\d\\d*\\s*)*$' ),

       // das sieht ziemlich blöde aus, also nochmal in übersichtlich, aufgeteilt
       // in kleine appetitliche häppchen, die dann zusammenfügt werden:

        v  =  '[-+]?' ,    // vorzeichen ( entweder + oder minus ), mit dem
                           // ?-quantifier, also: ein- oder keinmal

        d  =  '\\d'   ,    // ziffer, digit, von 0 bis neun, kann auch
                           // als zeichenklasse geschrieben werden: [0-9],
                           // oder auch [0123456789]
                           // eigentlich: \d, aber weil in string: \\d

       db  =  '\\d*'  ,    // dasselbe mit *-quantifier, also: beliebig oft ( 0, 1, oder mehr)

        w  =  '\\s*'  ,    // beliebig viel whitespace

       tr  =  '\\+'   ,    // beliebiges trennzeichen, hier ein literales +
                           // ein escape wg. sonderzeichen und
                           // ein escape wg. escape des escapes in string
                           // das + ist ein regex sonderzeichen:
                           // der +-quantifier ( mindestens einmal, oder beliebig oft )

        z  =  v + d + db,  // beliebige zahl

       zw  =  w + z + w,   // dito, mit umgebenden beliebigem whitespace


       rg  =  new RegExp( '^'  +         // anker: zeilenanfang, hier stringanfang

                          zw   +

                          '('  +         // einfangende und gruppierende klammer öffnend

                          tr   +

                          zw   +

                          ')*' +         // einfangende und gruppierende klammer schließend
                                         // mit *-quantifier: beliebig oft

                          '$'            // anker: zeilenende, hier stringende
                        ),

       rz  = new RegExp( z, 'g' )        // g ist die option für's globale matching
                                         // d.h.: finde jedes vorkommen diese patterns im
                                         // gegebenen string


alert( rg + '\n\n' + rz )                // nur mal zum guggen, ob die konstruierten
                                         // regexes auch hinhaun

if ( !isNaN( og*1 ) && !isNaN( ug*1 ) )  // sind og und ug tatsächlich brauchbare zahlen
if ( og*1 >= ug*1 )                      // und ist og wirklich mindestens so groß wie ug
  for( var i in test )
     {  var x, y,
            a = [],
            s = 0,
            f = 0

        if( x = rg.exec( test[i] ) )       // stimmt die struktur insgesamt?
          {
            if( x[1] )                     // das ist der sinn der einfangenden klammer:
                                           // wenn sich nach der ersten zahl mindestens ein
                                           // vorkommen des musters \+\s*[-+]?\d\d*\s* findet
              {
                while( y = rz.exec( test[i] ) ) a.push( y*1 )  // schaufle alle  [-+]?\d\d*  als
                                                               // numerische werte ins array a

                for ( var j = 0; j < a.sort().length; j++ )    // array a wird aufsteigend
                                                               // sortiert und auf doppelte
                                                               // nachbarn abgeklopft bzw. og und ug
                  if( a[j] == a[j+1] )
                    { alert('test[' + i + '] ' + a[j] + ' ist doppelt\n\n:' + test[i]);
                      s = 0;
                      f = 1;
                      break;
                    }
                  else if( a[j] > og*1 )
                    { alert('test[' + i + '] ' + a[j] + ' ist zu groß\n\n:' + test[i]);
                      s = 0;
                      f = 1;
                      break;
                    }
                  else if( a[j] < ug*1 )
                    { alert('test[' + i + '] ' + a[j] + ' ist zu klein\n\n:' + test[i]);
                      s = 0;
                      f = 1;
                      break;
                    }
                  else  s += a[j]
               }

             else  s = x[0]*1

             if( !f ) alert( 'test[' + i + '] ' +  '  summe => ' + s)
          }

        else  alert( 'test[' + i + "]  nüscht wg:\n\n" + test[i] )
     }
else  alert( og + ' kleiner ' + ug)
else  alert( ' tja, zahlen sind halt ein eher abstraktes konzept ')

</script>
</head>
<body>

</body>
</html>

gruß

matho

Hallo, alter Freund

ich bin momentan ein wenig in Eile, deshalb in Kürze:

Klammern (also die runden) kann man ua. benutzen, um
sich Teilausdrücke zu merken. Braucht man das nicht,
setzt man hinter die öffnende Klammer ein ?:


Ja nachdem, welche Umgebung man hat, ist das regex-Maschinchen
verschieden gestrickt und erlaubt dieses oder jenes nicht und anderes
anders uswusfetcppp...

Wie gesagt, auf die Schnelle, javascript:


<html>
<head>
<title>regex</title>
<script>

var test = [ ' 1 +    0',
             '   1   + q',
             ' 1 +    ',
             '  + 2',
             '   a +11',
             ' y + x',
             '12   +  45  ',
             '11   +  10  ',
             '    + ',
             '  2 + 0 + 12  ',
             '  2 + 0 + 11  ',
             ' 4 + 0 + z ',
             '   17',
             '201b  ',
             '  007 + 3 + 0006 ',
             ' 00003 + 0815',
             ' 00 '
           ],

      rg = /^\s*\d+\s*(?:\+\s*\d+\s*)*$/,                        // alle Zahlen, naja,
                                                                 // du weißt schon...

      rg = /^\s*(?:\d|1[01])\s*(?:\+\s*(?:\d|1[01])\s*)*$/,      // nur Zahlen bis 11

      rg = /^\s*0*(?:\d|1[01])\s*(?:\+\s*0*(?:\d|1[01])\s*)*$/,  // nur Zahlen bis 11
                                                                 // 007 ist erlaubt

       x = ''


for (var i in test)
 x += test[i] + '   =>   ' + (rg.exec(test[i]) ? 'ok' : 'KO') + '\n'

alert(x)

</script>
</head>
<body>

</body>
</html>

gruß
matho

Bei Unklarheiten bitte fragen, Antwort kann ein, zwei Tage dauern.

Moin,

wahrscheinlich steh' ich momentan (?) bloß
auf'm Schlauch:

IE meldet:

Zeile:   2
Zeichen: 1
Fehler:  Syntaxfehler
Code:    0
URL:     http://en.saveitfree.com/toolbar.html

und Opera 8.53:

http://www.saveitfree.com/getLocale.php … 9254552126
Unknown context
Syntax error while loading: line 1 of linked script at http://www.saveitfree.com/getLocale.php … 9254552126 :
<br /
--^

Das hat aber vielleicht nichts mit dem beschriebenen Fehler zu tun.

gruß
matho

12

(1 Antworten, geschrieben in JavaScript - Hilfe)

Moinmoin


<html>
<head>
<title>geht_doch?</title>
<script>

var D = function Div(parent, text)
        { this.parent = parent || document.body;
          this.text = text || "div";
          var elm = document.createElement("div");
          var elmtext = document.createTextNode(this.text);
          elm.appendChild(elmtext);
          this.parent.appendChild(elm); },


     M = function MyDiv(parent, text)
         { this.constructor(parent||document.body, text||"mydiv");}

onload = function(){
                    MyDiv.prototype = new Div(0, 99);
                    new MyDiv(0, 'geht doch ?!?' );
                   }

</script>
</head>
<body>

</body>
</html>

gruß

matho

13

(10 Antworten, geschrieben in Devshare Plausch)

Moin zusammen

"Hm, anhand der Beitraege frage ich mich grade ob
hier ueberhaupt noch was los oder alles schon
ausgestorben ist"


warum sollte es ausgerechnet hier anders sein als
sonstwo ? es ist halt fast wie im richtigen leben -
zumeist viel lärm um nichts, bloß daß hier sogar
kaum noch lärm ist. Und so betrachtet könnte
man meinen, wir sind auf dem richtigen weg.

das web platzt aus den nähten, und nach wirklich
guten sites muß man lange suchen.
Vor ein paar Tagen habe ich ein schlichte, schöne
Sache gesehen:

http://01010.org


gruß

matho

14

(3 Antworten, geschrieben in JavaScript - Hilfe)

Moin,

"... d.h. sie entfernt den Focus von allen Links, sobald das
     Dokument geladen wird, damit also "initial" (bei ersten
     Betrachten einer Seite) kein Link vorausgewählt ist...
     was das bringt? Keine Ahnung... aber "bösartig" ist das
     Skript wohl nicht.."


Ob diese Antwort "bösartig" ist? Keine Ahnung... aber kompletter
Quatsch ist sie wohl schon.
Ich möchte tatsächlich nun niemanden beleidigen, das sei fern
von mir - aber wie soll man so etwas denn sonst nennen.
Zumal ich ja wirklich Argumente habe.

Das script weist allen tags mit name==a (vulgo links) beim
Eintritt des Events FOCUS (mithin "onfocus") eine function
mit dem Inhalt "if(this.blur)this.blur()" zu. Das bewirkt
(beispielsweise) im IE und in firefox, daß nach dem anclicken
eines links kein häßliches Rändlein stehen beleibetetetet.
Mache Leute finden das schöner als anders.

Allerdings sagt man das einfacher so:

onload = function(i,l){ for (i in l=document.links)
                        l[i].onfocus = function(){ if(this.blur) this.blur() } }

gruß

matho

15

(3 Antworten, geschrieben in JavaScript - Hilfe)

Moin,

Ich glaube, es ging bei der Frage eigentlich nicht um ein new Image, sondern um
das Image-Object selbst.
Der einzige mir bekannte browser, der darauf eine Auskunft gibt, ist firefox,
der implementiert zumindest Image.QueryInterface und Image.prototype.
In Opera 8.51 ist window.Image eine function. Das ist wahrscheinlich, wie so
vieles an opera, irrsinnig geistreich - allein ich weiÃ? wieder mal nicht, was das
soll.

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
<html>
<head>
<title></title>
<meta http-equiv='content-type' content='text/html; charset=iso-8859-1'>

<script>

var A = function(a)      { A.a = [], A.i = []

                           try { for( var i in a ) A.i.push( i.length )
                               } catch(it){  }

                           var l = Math.max.apply(0, A.i)

                           try { for( var i in a )
                                  try { A.a.push( [ N( i, l ) + ' => ' + a[i], i , a[i] ] )
                                      } catch(it){ A.a.push( [ N( i, l ) + ' => ' + it, 0 , 0 ] ) }
                               } catch(it){  }

                           A.a.sort( function(x,y){ return isNaN( x[1]*1 + y[1]*1 ) ?
                                                           x[1]   > y[1]   ? 1 : -1 :
                                                           x[1]*1 > y[1]*1 ? 1 : -1 } )

                           return A.a
                         },

    C = function(a, b, c){ return a.appendChild( b.createElement(c) ) },

    I = function(a, b)   { for ( var i in b ) if ( a == b[i] ) return 1 },

    J = function(j, n, d){ var d   = d || document,
                               op  = window.opera,
                               ops = Object.prototype.toString,
                               ws  = 'height=300, width=700, resizable=yes, scrollbars=yes, dependent=no',
                               z   = 0

                           C( d.body, d, 'h3' ).innerHTML = d.title = n

                           with( d.body.style ) { fontFamily = 'courier, sans-serif'
                                                  fontSize   = '13px'
                                                  lineHeight = '25px'
                                                  color      = '#000'
                                                  background = '#aaa' }

                           for ( var i in j )
                            { var e,
                                  a = j[i],
                                  O = typeof a[2] == 'object' ||
                                      ( op && ops.apply( a[2] ).match(/Collection|Node/) ),
                                  F = typeof a[2] == 'function' && !I( a[2], [A, C, I, J, N, onload] )

                              C( e = C( d.body, d, 'div'), d, 'nobr').innerHTML = a[0]

                              with( e.style ) { background   = z++%2 ? '#cdcdcd' : '#dcdcdc'
                                                paddingLeft  = '6px'
                                                marginBottom = '1px'
                                                color        = O ? 'purple' : F ? 'green' : 'black'
                                                cursor       = O || F ? 'pointer' : 'default' }

                              e.a = a[2]
                              e.n = ( n.match(/\s/) && !n.match(/\(n/)? '(' + n + ')' : n ) +
                                    ( isNaN( a[1]*1 ) ?
                                    ( a[1].match(/\W/) ?  "['" + a[1] + "']" : '.' + a[1] ) :
                                    '[' +  a[1] + ']' )

                              if( F )
                               { e.onclick = function()
                                  { alert( op ? 'in moz und ie wird die anzahl\n'      +
                                                'der verlangten argumente angegeben\n' +
                                                '- in opera falsch implementiert -'    :
                                                this.a.length )
                                  }
                               }

                              if( O )
                               { e.onclick = function()
                                  { try { var w = open( '', '', ws )

                                          if( op )
                                           { with( w.document ) { open()
                                                                  write('<title></title><body></body>')
                                                                  close() } }

                                          J( A(this.a), this.n, w.document )
                                        } catch(it){  }
                                  }
                               }
                            }
                         },

    N = function(s, n, z){ for( var i = 0, x = s; i < n - s.length; i++ ) x += z || ' '
                           return x }

onload = function(){  var p = prompt(' beliebiges object eingeben, z.B.: \n ' +
                                     'new Image oder new Option oder auch Image oder Option \n' +
                                     'oder RegExp, Event, Screen ', 'window' )
                      J( A( eval(p) ), p )
                   }
</script>
</head>
<body bgColor=#440044></body>
</html>

Einfach mal new Image eingeben und dann mal Image.

gruÃ?

matho

N'abend,

bitte tu Dir zunächst einmal den Gefallen, und schau Dir folgendes
Beispiel in verschiedenen browsern an, ich würde vorschlagen:
IE, firefox, und den aktuellen opera.
In einer Schleife wird jedem Element der form 'mainForm' ein wert z,
und zwei funktionen zugeschrieben (eine für keydown, und eine für keyup).
Sag bitte Bescheid, was Du daran nicht verstehst.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
<title>_</title>
<script type='text/javascript'>

var d = document,  IE = d.all && !window.opera;

onload = function(){ for( var j = 0, e; j < ( e = d.mainForm.elements ).length; j++ )
                     { e[j].z = j;

                       e[j].onkeydown = function(o)
                       {   var q = IE ? event : o,
                               x = ''
                           for( i in q ) x += i + '  =>  ' + q[i] + '<br />'

                           d.getElementById('X').innerHTML = x
                       };

                       e[j].onkeyup = function(o)
                       { alert( 'name => '   + this.name + '\n' +
                                'nummer => ' + this.z    + '\n' +
                                'value => '  + this.value )
                       };
                     };
                   };
</script>
</head>

<body>

<form action='#' method='get' name='mainForm'>
<input type='text' name='a' /><br />
<input type='text' name='b' /><br />
<input type='text' name='c' /><br />
<input type='text' name='d' /><br />
<input type='text' name='e' /><br />
<input type='text' name='f' /><br />
<input type='submit' value='Abschicken' />
</form>

<div id='X'>

</div>
</body>
</html>

Dir wird auffallen, daß in allen drei browsern die Behandlung eines Events
anders als in den jeweils anderen implementiert ist.

Es ist deshalb gut, daß man so genau als möglich beschreibt, was man tun
möchte, bzw. was wann warum geschehen soll.

Das wäre der zwote Gefallen, um den ich Dich bitte.
Vielleicht weiß ich dann, was ich wem wie warum erklären kann.


gruß

matho

17

(2 Antworten, geschrieben in JavaScript - Hilfe)

Moin,

wenn ich's recht verstehe, möchtest Du es also
genauso machen, wie es bei moofx.mad4milk.net
gezeigt wird.
Das erste, was Du machen solltest, zumal wenn Du
Dich "bis dato noch nicht so richtig mit JavaScript
anfreunden könnte.", ist, Dir einmal den Quelltext
dieser Seite anzuschauen.
Der unterscheidet sich nämlich ziemlich von dem, was
Du gemacht hast.
Du wirst in function init()

//the main function, call to the effect object

auf einiges stossen, das Dich dem Verständnis der
Sache näher bringt, wenn Du Dich von dort ausgehend
ein bissel durch die Dateien hangelst, die Du ja
auch selbst eingebunden hast, mit der Absicht, sie
möglichst gewinnbringend zu benutzen:

Erstens:

prototype.lite.js  zeile 54

document.getElementsByClassName = function(className) {
  var children = document.getElementsByTagName('*') || document.all;
  var elements = new Array();
  
  for (var i = 0; i < children.length; i++) {
    var child = children[i];
    var classNames = child.className.split(' ');
    for (var j = 0; j < classNames.length; j++) {
      if (classNames[j] == className) {
        elements.push(child);
        break;
      }
    }
  }

Zwotens:

moo.fx.pack.js  zeile 103

//Fadesize with arrays
fx.MultiFadeSize = Class.create();
fx.MultiFadeSize.prototype = Object.extend(new Multi(), {
    effect: function(el){
        el.fs = new fx.FadeSize(el, this.options);
    },

    showThisHideOpen: function(el, delay, mode){
        for (i=0;i<this.el.length;i++){
            if (this.el[i].offsetHeight > 0 && this.el[i] != el && this.el[i].h.timer == null && el.h.timer == null){
                this.el[i].fs.toggle(mode);
                setTimeout(function(){el.fs.toggle(mode);}.bind(el), delay);
            }
            
        }
    },

    hide: function(el, mode){
        el.fs.hide(mode);
    }
});

Drittens:

prototype.lite.js  zeile 35

function $() {
  var elements = new Array();

  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);

    if (arguments.length == 1) 
      return element;

    elements.push(element);
  }

  return elements;
}

Das sind im wesentlichen die Funktionen, die das bewerkstelligen,
was Du machen möchtest.
Nun solltest Du Dir also besagten Quelltext zur Brust nehmen,
schauen, wie der mit dem script korrespondiert, und zunächst
einmal versuchen, das nachzubauen.
Wenn Dir dann so einigermaßen klar geworden ist, warum das Ganze
funktioniert und wie, kannst Du hergehen, und es nach Gutdünken
abändern.
Ich könnte jetzt auch hergehen, und Dir erklären, warum das, was
Du gemacht hast, nicht so funktioniern kann, wie Du das möchtest.
Allerdings macht das in meinen Augen keinen schlanken Fuß, alldieweil
Du von javascript wenig Ahnung hast, und weil ich Dir damit das
selber-Lernen nur erschweren würde.
Wenn Du aber so verfährst wie von mir vorgeschlagen, sollte sich
Dein Problem alsbald in Luft auflösen.

gruß

matho

18

(13 Antworten, geschrieben in JavaScript - Hilfe)

moin,

ideen hab' ich zwar, aber keinen actuellen mac, auf dem ich irgendwas testen
könnte, weswegen ich dazu nichts verbindliches sagen kann.
Wenn Du ein paar Fehlermeldungen beisteuern könntest, kann Dir
wahrscheinlich jemand, der mit macs testet, einen hilfreichen Tip geben.

gruss

matho

19

(8 Antworten, geschrieben in JavaScript - Hilfe)

moin,

vielleicht doch in name?:

params = '';
x = 1

var popup = window.open("../src/view/mapView.php?id=" + x, "Kartenansicht", params);

window.name = "[1,popup,'dada']"

alert( eval( window.name )[2] )

document.onclick = function(){  var p = eval( window.name )[1], q = []
                                for( var i in p )
                                try{ q.push( i + ' => ' + p[i] ) } catch(it){}
                                alert( q )
                             }

gruss

matho

20

(13 Antworten, geschrieben in JavaScript - Hilfe)

Moin,

Dann machen wir halt noch ein Schleifchen:

Du sagst statt:

for( var i in T = document.getElementsByTagName('*') )
if( T[i].className == 'm' ) M.push( T[i] )

for( var i in T = document.images )
if( T[i].className == 'o' ) { T[i].n = T[i].src
                              T[i].o = T[i].src.replace(e, '_o' + e) }

jetzt:

for( var f in F )
{ for( var i in T = F[f].document.getElementsByTagName('*') )
  if( T[i].className == 'm' ) M.push( T[i] )

  for( var i in T = F[f].document.images)
  if( T[i].className == 'o' ) { T[i].n = T[i].src
                                T[i].o = T[i].src.replace(e, '_o' + e) }
}

wobei Du vorher noch ein Array F angelegt hast, das die betreffenden frames enthält:

also statt :

var T, M = [],

jetzt:

var T, F = [ parent.frames[0], parent.frames[1] ], M = [],

Du kannst natürlich auch statt der indices

parent.frames['name_des_betreffenden_frames']

sagen.

gruß

matho

21

(2 Antworten, geschrieben in JavaScript - Hilfe)

Moin,

eine andre Möglichkeit ist:

<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
<title>Aufenthaltszeit</title>
<script type='text/javascript'>

var z = this.name || 0,
    C = function( c ){ return ( c = Math.floor( c ) ) > 9 ? c : '0' + c }

onload = function(){ setInterval( function(){ document.A.Z.value =
                                              [ C( ( ( this.name = ++z )/3600 )%24 ),
                                                C( ( z/60 )%60 ),
                                                C( z%60 ) ].join( ' : ' ) }, 1000 ) }
</script>
</head>
<body>
<form name=A>
<div style='position:fixed;top:10px;width:1px;'>
<input name=Z size=12 style='text-align:center'>
</div>
</form>
</body>
</html>

Das div mit seinen eigenartigen style-Angaben ist bloß für ältere netscapes, die
text-align in einem input-tag mit dem align-Attribut verwechseln.

gruß

matho

22

(13 Antworten, geschrieben in JavaScript - Hilfe)

Moin zusammen,

entschuldigt, wenn ich ein wenig insistiere - ich möchte einfach
nicht glauben, daß das so schwierig zu verstehen ist, es sind doch
lediglich ein paar Schleifchen und ein flag. Ich mach' mal noch einen
Versuch:

In einem Menu gibt's beliebig viele tags, die jeweils zwo images
enthalten, die beim mouseovern ausgetauscht werden sollen, und beim
mousouten wieder zurück.
Desweiteren sollen beim clicken die ausgetauschten Bilder stehenbleiben
und alle andern wieder in die Normalstellung zurückkehren.

Also:

<irgendeintag><img><img></irgendeintag>

Um die tags, die's betrifft, zu kennzeichnen, ordnen wir denen eine
class zu:

<irgendeintag class=m><img><img></irgendeintag>

und auch den betreffenden images:

<irgendeintag class=m><img class=o><img class=o></irgendeintag>

ach ja, und die srcs:

<irgendeintag class=m><img class=o src=../bilder/bild_1_1.jpg><img class=o src=../bilder/bild_1_2.jpg></irgendeintag>

Der Ordner bilder enthält nun zwo Dateien:

bild_1_1.jpg
bild_1_2.jpg

und weil wir jeweils noch ein Bild zum Austauschen brauchen, tun wir die auch noch dazu:

bild_1_1_o.jpg
bild_1_2_o.jpg

macht summa summarum für jeden tag, der zwo images enthält, deren srcs ausgetauscht werden sollen, Stücker vier.

Ordner Bilder enthält jetzt:

bild_1_1.jpg
bild_1_2.jpg
bild_1_1_o.jpg
bild_1_2_o.jpg

Ein html-text mit rudimentärem Menu könnte zB. so aussehen:

<html>
<head>
<title>menu</title>
<style>
.m{ display:block;
    width:200px;
  }
img.o{ width:40px;
       height:40px;
     }
</style>

<script>

</script>
</head>
<body>

<div class=m>
    <img class=o src=../bilder/bild_1_1.jpg>
    <img class=o src=../bilder/bild_1_2.jpg>
</div>

<a class=m href=#>
    <img class=o src=../bilder/bild_2_1.jpg>
    <img class=o src=../bilder/bild_2_2.jpg>
</a>
<i class=m>
    <img class=o src=../bilder/bild_3_1.jpg>
    <img class=o src=../bilder/bild_3_2.jpg>
</i>
<tt class=m>
    <img class=o src=../bilder/bild_4_1.jpg>
    <img class=o src=../bilder/bild_4_2.jpg>
</tt>

</body>
</html>

Damit wir nicht alles und jedes x-mal in diesen Quelltext reinschreiben müssen,
weisen wir beim Laden der Seite ( also onload ) allen tags alle Eigenschaften zu,
die wir uns von ihnen wünschen.

Wir notieren also im script-tag munter:

onload = function() {
                            }

Praktischerweise sind alle html-tags einer Datei im javascript-Array

document.getElementsByTagName('*')

abgebildet.

Um aus dieser Menge alle die rauszufischen, deren className == 'm' ist, und sie
von allen anderen zu separieren, sagt man

for( var i in T = document.getElementsByTagName('*') )
if( T[i].className == 'm' ) M.push( T[i] )

Selbstverständlich haben wir uns, pfiffig, wie wir sind, vorher eine temporäre
Variable T (die hat wirklich ausschließlich den Daseinszweck, temporär zu sein,
und sonst gar nichts), sowie ein Array M angelegt, also:

onload = function() { var T, M = []
                     
                               for( var i in T = document.getElementsByTagName('*') )
                               if( T[i].className == 'm' ) M.push( T[i] )
                            }

Das Array M enthält nach dem Laden der Datei alle tags, deren className == 'm' ist.

Ähnlich verhält es sich mit den images einer Datei.
Die sind nämlich allesamt im javascript-Array

document.images

abgebildet.

Wir weisen jetzertle allen images, deren className == 'o' ist, zwo Eigenschaften zu,
nämlich die src des Normalzustandes, und die src zum Austauschen:

var e = '.jpg'

for( var i in T = document.images )
if( T[i].className == 'o' ) { T[i].n = T[i].src
                                         T[i].o = T[i].src.replace(e, '_o' + e)  }


Weil wir es so eingerichtet haben, daß die beiden srcs sich lediglich durch das
angehängte _o unmittelbar vor dem Namen des Dateityps unterscheiden, brauchen
wir nur die Dateiendung ( hier: .jpg ) durch _o.jpg zu ersetzen.

Jedes image hat jetzt eine Eigenschaft n (zB. '..bilder/bild_1_1.jpg') und eine
Eigenschaft o (zB. '..bilder/bild_1_1_o.jpg')

Also :

<script>

var e = '.jpg'

onload = function() { var T, M = []
                      
                      for( var i in T = document.getElementsByTagName('*') )
                      if( T[i].className == 'm' ) M.push( T[i] )

                      for( var i in T = document.images )
                      if( T[i].className == 'o' ) { T[i].n = T[i].src
                                                    T[i].o = T[i].src.replace(e, '_o' + e) }
                    }

</script>

Zu guter Lechz sagen wir den tags mit dem className == 'm', die sich ja alle im Array M
zusammengefunden haben, wie sie sich zu benehmen haben:

for( var i in M )
{ M[i].onmouseover = function(){ }

  M[i].onmouseout  = function(){ }

  M[i].onclick     = function(){ }
}

Jedes tag mit dem className == 'm' hat sogenannte childNodes, von denen uns aber
ausschließlich diejenigen interessieren, deren className == 'o' ist, das sind die
images, deren srcs ausgetauscht werden sollen. Wir schreiben eine kleine Hilfsfunction,
die uns diese childNodes herauspickt und ihnen eine src zuweist, von der wir ja noch
wissen, daß diese eine Eigenschaft eben jener childNode ist, nämlich 'n' oder 'o':

S = function (s, ss){ for ( var i in s = s.childNodes )
                      if( s[i].className == 'o' ) s[i].src = s[i][ss] }

um nun zB. beim mouseover die srcs zu tauschen, rufen wir diese Hilfsfunction:

M[i].onmouseover = function(){ S( this, 'o') }

Das this bezieht sich auf M[i], also den tag mit dem className == 'm', der die
zwei images umschließt, und deren srcs werden nun deren Eigenschaften o zugewiesen,
die wiederum auf die Dateien mit den Austauschbildern verweisen.

Genauso beim mouseout:

M[i].onmouseout = function(){ S( this, 'n') }

Wir haben also bisher:

<script>

var e = '.jpg'

onload = function() { var T, M = [],
                          S = function (s, ss){ for ( var i in s = s.childNodes )
                                                if( s[i].className == 'o' ) s[i].src = s[i][ss] }
                      
                      for( var i in T = document.getElementsByTagName('*') )
                      if( T[i].className == 'm' ) M.push( T[i] )

                      for( var i in T = document.images )
                      if( T[i].className == 'o' ) { T[i].n = T[i].src
                                                    T[i].o = T[i].src.replace(e, '_o' + e) }

                      for( var i in M )
                      { M[i].onmouseover = function(){ S( this, 'o') } 

                        M[i].onmouseout  = function(){ S( this, 'n') } 

                        M[i].onclick     = function(){ }
                      }
                    }

</script>

Nun sollen bei einem onclick die Bilder stehen bleiben, d.h., sie sollen
beim mouseout nicht wieder zurückgetauscht werden.
Wir geben zur Lösung dieser Aufgabe jedem tag mit dem className == 'm' eine
Eigenschaft mit dem Namen act, in der gespeichert werden kann, ob er denn nun
angeclickt wurde oder eben nicht.
Zu Anfang wurde nichts angeclickt, also wird die Eigenschaft act für alle
tags mit dem className == 'm' auf den Wert 1 gesetzt.

M[i].act = 1

Solange dieser Wert 1 bleibt, geht das mouseovern und das mouseouten ganz normal
vonstatten.
Sobald aber ein tag mit dem className == 'm' angeclickt wird, ändert sich
seine Eigenschaft act, sie wird auf 0 gesetzt, und beim mouseovern und -outen
findet gar nichts statt.

Das sieht scripttechnisch dann so aus:

<script>

var e = '.jpg'

onload = function() { var T, M = [],
                          S = function (s, ss){ for ( var i in s = s.childNodes )
                                                if( s[i].className == 'o' ) s[i].src = s[i][ss] }
                      
                      for( var i in T = document.getElementsByTagName('*') )
                      if( T[i].className == 'm' ) M.push( T[i] )

                      for( var i in T = document.images )
                      if( T[i].className == 'o' ) { T[i].n = T[i].src
                                                    T[i].o = T[i].src.replace(e, '_o' + e) }

                      for( var i in M )
                      { M[i].act = 1

                        M[i].onmouseover = function(){ if( this.act ) S( this, 'o') } 

                        M[i].onmouseout  = function(){ if( this.act ) S( this, 'n') } 

                        M[i].onclick     = function(){ if( this.act ) this.act = 0 }
                      }
                    }

</script>

Wenn ein tag mit dem className == 'm' angeclickt wurde, hat seine Eigenschaft act den
Wert 0.
Danach wird vielleicht ein andrer tag mit dem className == 'm' angeclickt werden. Nun
soll dessen Eigenschaft act 0 sein, die des ersteren aber wieder auf 1 gesetzt werden,
und auch die images dieses ersteren sollen wieder in den Normalzustand zurückgesetzt
werden. Wir müssen der function M[i].onclick also noch ein bissel hinzufügen:

M[i].onclick = function(){ if( this.act ) { for( var i in M )
                                            if ( !M[i].act ) { M[i].act = 1
                                                               S( M[i], 'n') }
                                            this.act = 0
                                          }

!M[i].act

bedeutet:

M[i].act hat den Wert 0 oder zB. false, auf gut Deutsch:  M[i].act ist nicht.


for( var i in M )
if ( !M[i].act ){ }

bedeutet:

Suche aus der Menge aller tags mit dem className == 'm' denjenigen, dessen Eigenschaft act == 0 ist.

Und

for( var i in M )
if ( !M[i].act ) { M[i].act = 1
                       S( M[i], 'n') }

bedeutet:

Wenn Du das Ding gefunden hast, dann setze dessen Eigenschaft act wieder auf 1 und tausche
die srcs seiner images wieder auf normal ( das macht wieder mal die Hilfsfunction S() )

Wir fügen noch ein blurmiges

if( this.blur ) this.blur()

ein. Das hat mit der eigentlichen Funktionalität nichts am Hut, beseitigt aber zB. im IE
die blöden gestrichelten Rahmen, die beim anclicken eines links entstehen, also - tutti frutti- :

<html>
<head>
<title>menu</title>
<style>
.m{ display:block;
    width:200px;
  }
img.o{ width:40px;
       height:40px;
     }
</style>

<script>

var e = '.jpg'

onload = function(){ var T,  M = [],
                         S = function (s, ss){ for ( var i in s = s.childNodes )
                                               if( s[i].className == 'o' ) s[i].src = s[i][ss] }

                     for( var i in T = document.getElementsByTagName('*') )
                     if( T[i].className == 'm' ) M.push( T[i] )

                     for( var i in T = document.images )
                     if( T[i].className == 'o' ) { T[i].n = T[i].src
                                                   T[i].o = T[i].src.replace(e, '_o' + e) }

                     for( var i in M )
                     { M[i].act = 1;

                       M[i].onmouseover = function(){ if( this.act ) S( this, 'o') }

                       M[i].onmouseout  = function(){ if( this.act ) S( this, 'n') }

                       M[i].onclick     = function(){ if( this.act ) { for( var i in M )
                                                                       if ( !M[i].act ) { M[i].act = 1
                                                                                          S( M[i], 'n') }
                                                                       this.act = 0
                                                                       if( this.blur ) this.blur() } } } }
</script>
</head>
<body>

<div class=m>
    <img class=o src=../bilder/bild_1_1.jpg>
        <img class=o src=../bilder/bild_1_2.jpg>
</div>

<a class=m href=#>
    <img class=o src=../bilder/bild_2_1.jpg>
    <img class=o src=../bilder/bild_2_2.jpg>
</a>
<i class=m>
    <img class=o src=../bilder/bild_3_1.jpg>
    <img class=o src=../bilder/bild_3_2.jpg>
</i>
<tt class=m>
    <img class=o src=../bilder/bild_4_1.jpg>
    <img class=o src=../bilder/bild_4_2.jpg>
</tt>

</body>
</html>

Das war's dann auch schon.
Ist das tatsächlich so schwierig ?


gruß

matho

23

(13 Antworten, geschrieben in JavaScript - Hilfe)

Moin zusammen,

so schwierig ist es doch gar nicht:

<html>
<head>
<title>menu_images</title>

<style>

.am{  display:block;
   }

</style>

<script>
var I = [
          [
            [ [ 'bild_1_1_1', 'bild_1_1_2' ], [ 'bild_1_2_1', 'bild_1_2_2'] ],
            [ [ 'bild_2_1_1', 'bild_2_1_2' ], [ 'bild_2_2_1', 'bild_2_2_2'] ],
            [ [ 'bild_3_1_1', 'bild_3_1_2' ], [ 'bild_3_2_1', 'bild_3_2_2'] ],
            [ [ 'bild_4_1_1', 'bild_4_1_2' ], [ 'bild_4_2_1', 'bild_4_2_2'] ]
          ]
        ],

    p = '../bilder/',
    e = '.jpe',

    imw = '20px',
    imh = '20px',

//////////////////////////////////////////////////////////////////////////////

    d = document,
    T = function(t, tt){ return (tt || d).getElementsByTagName(t) }


onload = function(){ for( var i = 0, c; i < (c = T('div', d.getElementById('menu'))).length; i++ )
                     for( var j = 0, a; j < (a = T('a', c[i]) ).length; j++ )
                     { for( var k = 0, b; k < (b = T('img', a[j]) ).length; k++ )
                         { b[k].style.width =  imw
                           b[k].style.height = imh
                           b[k].n = b[k].src =  p + I[i][j][k][0] + e
                           b[k].o =             p + I[i][j][k][1] + e
                         }

                       a[j].act = 1

                       a[j].onmouseover = function()  { for( var i = 0, b; i < (b = T('img', this)).length; i++ )
                                                         b[i].src = b[i].o
                                                      }

                       a[j].onmouseout  = function()  { if( this.act )
                                                        for( var i = 0, b; i < (b = T('img', this)).length; i++ )
                                                         b[i].src = b[i].n
                                                      }

                       a[j].onclick     = function()  { if( this.act )
                                                        for( var i = 0, c; i < (c = T('div', d.getElementById('menu'))).length; i++ )
                                                         for( var j = 0, a; j < (a = T('a', c[i]) ).length; j++ )
                                                          { if( a[j] != this )
                                                            { for( var k = 0, b; k < (b = T('img', a[j]) ).length; k++ )
                                                               b[k].src =  b[k].n
                                                              a[j].act = 1
                                                            }
                                                          }
                                                         this.act = 0
                                                       }
                     }
                   }
</script>
</head>
<body>

<div id=menu>
<div>
    <a href=# class=am><img src='' alt=''><image src='' alt=''>link 1</a>
    <a href=# class=am><img src='' alt=''><image src='' alt=''>link 2</a>
    <a href=# class=am><img src='' alt=''><image src='' alt=''>link 3</a>
    <a href=# class=am><img src='' alt=''><image src='' alt=''>link 4</a>
</div>
</div>

</body>
</html>

Im Array I, das der Struktur des Menus nachgebildet ist, sind die bildnamen aufgehoben,
p ist der Pfad zum dazugehörigen Ordner, e die Dateiendung, in der Annahme, daß alle
bilder vom gleichen Typ sind.


gruß

matho

Naja,

Abkürzungen im eigentlichen Sinn gibt's genau zwo, nämlich:

d = document, und
m = d.getElementById( 'Menu' )

desweitern drei Variablen ( sw, s, und t ) und zwei
Functionsargumente ( l und x )

macht summa summarum Stücker 7, das schreit nicht unbedingt
zwingend nach dem Verdikt "viel", zumal wenn in Deinem
eignen script, das in der Tat ohne jegliche Abkürzung auskommt,
sich bereits 6 finden lassen, wobei die notwendige Variable für
den Timer allerdings fehlt, und damit wär'n wir auch bei 7.
Und während Du 4 Functionen notierst, sind's bei mir bloß zwei.

Die eine wirkliche Abkürzung aber, die sich in meinem kleinen
script versteckt, ist tatsächlich ein bissel tricky, um nicht zu
sagen dirty, und ich bin doch gespannt, ob irgendjemand die
findet, soll heißen: ob jemand schlüssig erklären kann, wie
und warum dieses script überhaupt funktioniert, denn im
rechten Licht besehen, fehlt etwas ziemlich wichtiges...

gruß

matho

25

(2 Antworten, geschrieben in JavaScript - Hilfe)

Moin,

"Prob 3: Beide Browser sagen, dass der Fehler in der coolmenu4.js Datei liegt.
Da kann er aber nicht sein, den die ist Fehlerfrei.."

Soso, "den die Datei ist Fehlerfrei"...

Wenn Du mir noch sagen kannst, wie Du das beurteilen willst, könnt' ich
vielleicht anfangen, Dir experimentellerweise mal zu glauben.

Aber ich glaub', ich glaub' Dir lieber doch nicht, und mach' mal 'ne
kleine Stippvisite auf dhtmlcentral.

Im folgenden eine nichtrepräsentative Sammlung von Fehlern, die sich im
Firefox nach zufälligem, fünfminütigem Rumgeclicke aufgetan haben:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

http://www.dhtmlcentral.com/projects/co … ple2.html#

Click me to show a menu

Fehler: xx is not defined

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


http://www.dhtmlcentral.com/projects/li … html?m=56#

obj.clipIt(0,100,100,0,10,'alert()')

Fehler: uncaught exception: [Exception... "Not enough arguments [nsIDOMWindowInternal.alert]" 
nsresult: "0x80570001 (NS_ERROR_XPC_NOT_ENOUGH_ARGS)" 
location: "JS frame :: http://www.dhtmlcentral.com/projects/lib/lib.js
:: anonymous :: line 134"  data: no]

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


http://www.dhtmlcentral.com/script/sear … egory=menu

View demo

News -> News archive

Fehler: winit is not defined

Microsoft JScript runtime  error '800a1391'
'offwindows' is undefined
/inc/inc_top.asp, line 2

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


http://www.dhtmlcentral.com/projects/co … 1&id=9

fillImg

Fehler: oM is not defined
Quelldatei: http://www.dhtmlcentral.com/projects/co … .asp?id=29
Zeile: 30

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


http://www.dhtmlcentral.com/projects/co … menu1.html

auf Scripts -> New scripts clicken und die Maus über die anderen Felder ziehen

Fehler: oCMenu is not defined
Quelldatei: http://www.dhtmlcentral.com/projects/co … lmenus4.js
Zeile: 119

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


Der letzte Fall dürfte eventuell Dein geneigtes Interesse finden.

grüsse an die Damen

matho