Kleiner Javascript Test schlägt fehl. Woran liegt es?

  • Hallo, ich fange gerade neu mit Javascript an und wollte einen kleinen Test machen. Habe dazu von selfthtml einen mini code kopiert und an mein dokument angepasst, aber es will nicht funktionieren und ich seh den fehler einfach nicht.

    HTML:


    Javascript:

    Code
    var Neu = "neuer Text";
    
    
    function aendern() {
        document.getElementById("text")
            text.innerHTML = Neu;
    
    var test = "Hallihallo"


    Normalerweise sollte bei Aufrufen der HTML Datei sofort "Hallihallo" geschrieben werden, und wenn ich auf den button drücke dann sollte normalerweise ja "Hi" zu "neuer Text" werden, aber es klappt leider nicht. woran haperts?

  • Danke für deine antwort. habe meine fehler entdeckt.

    das ist der code aus selfthtml:

    Code
    var Neu = "neuer <b>fetter<\/b> Text";
    
    
    function Ändern() {
        document.getElementById("Absatz")
            .innerHTML = Neu;
    }


    Zum einen fehlt doch dort ein semikolon und zum anderen muss vor ".innerHTML" doch noch "Absatz" stehen

    • Offizieller Beitrag

    Hallo,

    Das ist auch nicht der Code, den Du in #1 gepostet hast!
    Ich habe #1 1:1 kopiert und nur die Funktion geschlossen und die fehlenden Semikola gesetzt.

    Generell musst Du das getElementById() in einer Variablen vorhalten:

    Code
    _meinElement = document.getElementById( 'Absatz' );


    dann kannst Du auch bequem mit innerHTML darauf zugreifen:

    Code
    _meinElement.innerHTML = Neu;


    Gruß Arne


    ps: hast Du mal einen Link, wo genau Du das her hast. Ich kann mir selbst von selfhtml nicht vorstellen, dass das derart falsch publiziert wird.

  • hab das hier her: https://wiki.selfhtml.org/wiki/JavaScript/DOM/node/innerHTML

    in der box auf der seite steht es ja sogar noch richtig. klickt man aber auf "ansehen" unter dem code, dann öffnet sich ein weiteres fenster und ich habe mir nur dieses angeschaut.


    Edit: Denke es hat bei mir wegen dem Absatz in dem sich öffnenden fenster nicht geklappt. durch den absatz werden die bausteine ja auseinander gezogen und funktionieren dann nicht mehr oder?

    - - - Aktualisiert - - -

    Hoffe es ist ok, wenn ich hier fragen zu meinem miniprojekt stelle.

    So läuft die datei ja derzeit ab:
    -los drücken
    -"ja" eingeben
    -text 1 erscheint
    -auf "weiter" klicken
    -text2 erscheint
    -auf "weiter" klicken
    -text3 erscheint

    jetzt ist die frage: wie schaffe ich es, dass beim klick auf "weiter" automatisch eine zahl addiert wird zu der variable in der funktion "weiter"? und danach dann text4, dann text5 bei einem klick auf weiter erscheint. ich stehe gerade glaub ich auf dem schlauch und bei google bin ich auch gerade nicht schlauer geworden. vielen dank, wäre sehr nett!

    2 Mal editiert, zuletzt von froststep (24. Februar 2016 um 08:34)

    • Offizieller Beitrag

    Hallo,

    Zitat

    Edit: Denke es hat bei mir wegen dem Absatz in dem sich öffnenden fenster nicht geklappt. durch den absatz werden die bausteine ja auseinander gezogen und funktionieren dann nicht mehr oder?

    Nein, das Beispiel dort ist absolut korrekt. Dein Absatz ( welchen Du auch immer meinst ), hat eigentlich nichts mit der Funktionalität zu tun.

    Zitat

    wie schaffe ich es, dass beim klick auf "weiter" automatisch eine zahl addiert wird zu der variable in der funktion "weiter"?

    Zuerst mal solltest Du Wissenslücken füllen.
    Das hier macht z.B. gar keinen Sinn:

    Code
    document.getElementById("text");
    [COLOR=#333333]document.getElementById("button");[/COLOR]


    Wie in #4 geschrieben musst Du die Elemente fangen oder direkt verwenden in der Funktion:

    Das Script habe ich nach unten verlegt, damit das Element auch wirklich schon geladen und ansprechbar ist.
    Das ganze geht mit jQuery allerdings viel eleganter, finde ich:

  • Hallo nochmal und danke für deine Hilfe. Ich wollte mich erstmal an deinem Beispiel ohne jquery versuchen.

    Dieser Code ist in meiner Javascript Datei:

    Jedoch wird in die HTML Datei dann nicht der Inhalt der Variable Text 2,3,4usw. geschrieben, sondern im Browser steht einfach nur "Text2".

    • Offizieller Beitrag

    Hallo,

    Zitat

    Jedoch wird in die HTML Datei dann nicht der Inhalt der Variable Text 2,3,4usw. geschrieben, sondern im Browser steht einfach nur "Text2".


    Dann habe ich #5 falsch verstanden. In dem Fall solltest Du Dir Arrays ansehen:

    Code
    var texte = [
        'neuer Text 1',
        'neuer Text 2',
        'neuer Text 3',
        'neuer Text 4'
    ];


    Und dann nutzt Du den iCounter, um auf die einzelnen Elemente zuzugreifen:

    Code
    document.getElementById( 'toggleText' ).innerHTML = texte[iCounter++];

    Gruß Arne

  • Danke, klappt super jetzt.

    Das war jetzt ja sozusagen der erste Schritt:

    Zitat

    Knopf drücken: Text 1
    Nochmal Knopf drücken: Text 2

    Jetzt würde ich es gerne erweitern mit 2 Knöpfen:

    Ein Text steht dort, dann hat man zwei Knöpfe zur Auswahl. Je nach dem, welchen Knopf man drückt, erscheint ein neuer Text und die Beschriftung der alten Knöpfe ändert sich.

    Ich bin noch dabei zu überlegen, wie das ablaufen könnte, aber vielleicht hat jemand von euch ja Anreize für mich. Ich weiß auch nicht, ob ich mit mehreren Arrays arbeite oder vielleicht alle Knöpfe und Texte in einen einzelnen Array packe.

  • https://play.google.com/store/apps/det…ne.google&hl=de

    Auf diesem Spiel soll mein Spiel basieren, also von der Mechanik her.

    In dem Spiel gibt es auch Benachrichtigungen, Speicherungen und Zeitabstände zwischen den erscheinenden Texten, aber davon bin ich ja noch etwas entfernt. Zudem kann man auf der Basis von HTML und CSS usw. glaub ich eh keine Benachrichtigungen aktivieren, was ich auch eig gar nicht vor habe.

    Einmal editiert, zuletzt von froststep (29. Februar 2016 um 07:53)

  • Ich möchte, dass ein Knopf unsichtbar wird, wenn nichts auf ihm steht. Hier mein Code:

    HTML:

    Code
    <button id="buttonRechts" onclick="setTimeout(forwardingRechts,1100);">-</button>

    Javascript:

    Code
    while(document.getElementById('buttonRechts').innerHTML==="-"){
        document.getElementById('buttonRechts').style.visiblity = "hidden";
    }

    CSS

    Code
    #buttonRechts{
        visibility: visible;
    }

    Funktioniert leider nicht. Habe schon einige Dinge ausprobiert.

  • danke, aber funktioniert leider auch nicht. ich möchte, dass jeder knopf, der "-" draufstehen hat, gar nicht erst angezeigt wird. Muss ich noch was an dem code ändern?

  • vielen dank. hat geklappt.

    Anderes Thema:
    bei diesem Code stürzt der Browser ab:

    Code
    function forwardingLinks() {                        //Button links
        playaudio();
        while(iCounterText < part1.length-1){
          [U][I][B]  setTimeout(verzog,500);[/B][/I][/U]
        }
            document.getElementById('buttonLinks').innerHTML = part1[part1.length-1];
    }


    Bei diesem Code nicht:

    Code
    function forwardingLinks() {                        //Button links
        playaudio();
        while(iCounterText < part1.length-1){
            [U][I][B]verzog();[/B][/I][/U]
        }
            document.getElementById('buttonLinks').innerHTML = part1[part1.length-1];
    }

    Wie kann "setTimeout" dafür sorgen, dass der Browser abstürzt? Ohne setTimeout werden mir 5 Texte auf einmal angezeigt. die funktion "verzog()" wurde also 5 mal direkt nacheinander durchgeführt. Durch setTimeout möchte ich erreichen, dass zwischen jedem text 500 ms verzögerung liegen. Verstehe nicht, warum dann der browser abstürzen sollte.

    Einmal editiert, zuletzt von froststep (6. März 2016 um 11:19)

  • der _ vor "setTimeout" kam durch die Formatierung des Textes. in den Dateien ist es richtig geschrieben.

    ich möchte halt , dass ein ganzes array ausgeworfen wird, jedoch mit Verzögerung zwischen jedem teil. es soll ja ein Text basiertes Spiel werden.