medi: 3 Anfängerprobs mit Javascript

Hallo :-D

Hab da nen paar Probs mit Javascript, auch schon gegoogelt, aber nix gefunden was geklappt hat.

erstes Prob:

Das Grundgerüst der Site is ne Table (geslided mit PS), d.h. die Buttons sind in <td>-Tags eingefasst. Da ab und an ein paar Buttons gegen andere getauscht werden müssen, wollte ich mit Javascript eine Bedingung einbauen. Also - wenn der Status true ist, dann nimm für diesen <td>-Tag das Bild, und wenn false dann nimm dieses Bild.
Bis jetzt habe ich es nur so hin bekommen, dass die Graphik mittels Userinteraktion geändert wird. Aber die Site soll ja gleich so geladen werden, wie es der Status angibt.

Quasi sieht der Code bis dato so aus:

->head

status=new Boolean(false);
function buttonAendern() {
if(status=false)
document.images.button.src=neuerButton.gif;
}

->body
<td><img src=alterButton.gif></td>

Nun weiß ich aber net, wie ich die Function einbinden kann, dass gleich beim laden der Site evtl die Buttons geändert werden, Bzw was für andere Möglichkeiten es gibt um einfach im head bestimmte Zusammenstellungen von Graphiken auswählen zu können.

zweites Prob:

selbe Site...

auch für die Wartung, wollte ich mit JS einen Variable erstellen, deren Inhalt dann in einem iFrame im body wiedergegeben wird. Aber wie?
Die Variable soll ne Zeichenkette sein und dieser Text soll dann ins iFrame rein. Ich weiß auch ehrlichgesagt nicht wie ich da rangehen soll...

drittes Prob:

Ich bekomme es einfach nicht hin das window.open(exterenURL) auch wirklich auf eine URL referenziert. Ein neues Fenster öffnet sich, aber das wars dann auch schon. Ist open() nur für interne Verweise gemacht, bzw gibts denn ne Befehl mit dem ich dann wirklich eine neue URL öffnen kann (bitte nicht href).
Grund: um URL´s schneller pflegen zu können, steht im head die entsprechende Funktion (mit open(), und im Body steht dann href"function()". Wiegesagt das Fenster öffnet sich, aber das wars auch schon.

Danke schon mal

Gruß medi

  1. Hi,

    Das Grundgerüst der Site is ne Table (geslided mit PS), ...

    hmm, nicht schön.

    status=new Boolean(false);
    function buttonAendern() {
    if(status=false)

    Warum setzt du status hier in der Klammer des if-Ausdrucks auf false? Dann trifft die if-Abfrage ja nie zu.
    Du wolltest doch wahrscheinlich den aktuellen Wert bloß abfragen, oder? Dann tu das doch auch - entweder mit
     if (status)
    oder negiert mit
     if (!status)

    document.images.button.src=neuerButton.gif;

    Du hast ein Objekt namens neuerButton, das in der Eigenschaft gif die URL des neuen Bildes gespeichert hat? Nein? Ach, du willst den Namen des neuen Bildes direkt angeben! Dann schreib doch bitte auch einen String hin, anstatt einer Variablen.
    Außerdem brauchst du noch ein name-Attribut, wenn du in der oben angesprochenen JS-Funktion das Bild über diesen Namen ansprechen willst.

    <td><img src=alterButton.gif></td>

    Fehler: Du hast das alt-Attribut vergessen.
    Außerdem solltest du dir *unbedingt* angewöhnen, Attributwerte *immer* in Anführungszeichen zu schreiben.

    Ich bekomme es einfach nicht hin das window.open(exterenURL) auch wirklich auf eine URL referenziert.

    Beachte, dass die Methode window.open() mindestens zwei Parameter erwartet!

    So long,
     Martin

    --
    Alleine sind wir stark...
    gemeinsam sind wir unausstehlich!
    1. Hallo Martin,

      Beachte, dass die Methode window.open() mindestens zwei Parameter erwartet!

      Wenn man eine leere Zeichenkette nur halb wertet, auch nur anderthalb Parameter.

      Erinnerst du dich?

      Gruß Gernot

      1. Hallo Gernot,

        Erinnerst du dich?

        ohne nachzusehen, hätte ich mich nicht mehr erinnert. Aber der Blick in den Archivthread hat tatsächlich so einen Déjà-vu-Effekt hervorgerufen.

        Allerdings ist für mich als eingefleischten Programmierer auch ein Leerstring ein vollwertiger Parameter, den ich auch voll zähle. :-)

        Schönen Abend noch,
         Martin

        [ mit Konzentrationsschwäche schon nach dem zweiten Bier heute ein billiger Fall ;-) ]

        --
        Wer im Glashaus sitzt, sollte Spaß am Fensterputzen haben.
  2. Grüezi!

    Das Grundgerüst der Site is ne Table (geslided mit PS),

    Diese Herangehensweise ist, gelinde gesagt, bedenklich. Die wird Dir noch einige weitere Probleme einbrocken.

    Zu Deinem ersten Problem hat Der Martin ja schon einiges geschrieben. Nur zwei Ergänzungen noch:

    • Die Funktion kannst Du im onload-Ereignis des body-Elements aufrufen.
    • Gehe ich recht in der Annahme, daß diese Buttons die Navigation oder etwas ähnlich wichtiges darstellen? Wenn ja, was machen Besucher, bei denen Javascript nicht ausgeführt wird? (Das betrifft auch Suchmaschinen!)

    zweites Prob:

    selbe Site...

    auch für die Wartung, wollte ich mit JS einen Variable erstellen, deren Inhalt dann in einem iFrame im body wiedergegeben wird. Aber wie?

    Halte ich für keine gute Idee, denn das macht den Inhalt u.U. unerreichbar. Warum willst Du den Inhalt überhaupt erst in eine Variable schreiben und nicht gleich dahin, wo er erscheinen soll?
    Und selbst wenn es unbedingt eine Javascript-Variable sein muß: Bist Du sicher, daß Du einen iFrame brauchst? Hier klingt es so, als würde ein Textabsatz genügen.

    drittes Prob:

    Ich bekomme es einfach nicht hin das window.open(exterenURL) auch wirklich auf eine URL referenziert. Ein neues Fenster öffnet sich

    manchmal. Das hängt von den Browsereinstellungen des Benutzers ab. Bei mir wirst Du es nicht schaffen, eins von diesen nervtötenden PopUps zu öffnen.

    aber das wars dann auch schon. Ist open() nur für interne Verweise gemacht, bzw gibts denn ne Befehl mit dem ich dann wirklich eine neue URL öffnen kann (bitte nicht href).

    open() unterscheidet nicht zwischen internen und externen Verweisen. Wahrscheinlich stimmen Deine Parameter nicht, wie Der Martin schon schreibt.
    Warum nicht href? Das ist die einzige sinnvolle Möglichkeit für das, was Du vorhast.

    Grund: um URL´s schneller pflegen zu können, steht im head die entsprechende Funktion (mit open(), und im Body steht dann href"function()". Wiegesagt das Fenster öffnet sich, aber das wars auch schon.

    Steht Dir serverseitiges Script zur Verfügung, z.B. PHP? Damit könntest Du solche Sachen zentralisieren, ohne Dir den ganzen Ärger mit dem Javascript einzuhandeln.

    Viele Grüße vom Længlich

  3. erstmal Danke für die Tips :-D

    Wegen dem Tables mache ich mir keine Gedanken da es nur ne Infopage is ohne Navi usw.

    Die Buttons die verändert werden sollen, sollen wirklich nur den Status einiger externer Objekte (z.B. existent, nicht existent) anzeigen. Und da ich nicht der einzigste bin der an dieser Site diesbezüglich Veränderungen durchführen wird, wollte ich das ganze so einfach wie möglich machen, also das niemand erst im Code rumsuchen muss.
    Ich denke ich werde das iFrame rausnehmen und wirklich nur nen Textabsatz reinmachen, vllt bekomme ich es da irgendwie mit einer Art Variable hin...

    also Danke erst mal :-)