allgemeine fragen zu Javascript

  • ich meine das muss doch eigentlich das gleiche wie jquery acordion sein, der schiebt das was unter den element ist auch alles nach unten.


    ich habe jetzt auch viel gegoogelt und 3einige lesen das mit javascript aus. also erst die grösse des containers und dann die anderen darunter über "TOP" positionieren..


    Aber da das acordion ja fast das macht was ich haben will müstte das ja auch einfacher gehen

  • dies hier funktioniert irgendwie nicht.

    mache ich da irgendwas falsch ,geht das überhaupt wie ich das vor habe

  • Beliebter Fehler, es passiert folgendes: Die Eventlistener werden registriert und die Schleife ist zu Ende. Danach hat a den Wert 3. Wenn jetzt später geklickt wird, funktioniert nichts, weil es für 3 keine Elemente gibt.

    Abhilfe, indem man "let" verwendet:

    Code
    for(let a=0;a<=2;a++){

    Das ganze sollte auch viel einfacher gehen: Gib den Pfeilbuttons eine einheitliche Klasse und verwende dieses jquery:

    Code
        $(".xppfeil").addClass("xpdown").click(function(){
               if($(this).hasClass('xpdown')) {
                     $(this).removeClass("xpdown").addClass("xpup")
               }else{
                     $(this).removeClass("xpup").addClass("xpdown")
               }
         });
  • Das ist ja viel kürzer und funktioniert sogar bestens.


    mit diesen "this" komme ich immer durcheinander.mal funktioniert es was ich mit this versuche mal wieder nicht.

    ich schecke da noch nicht ganz durch.


    Was macht den "let" ?

  • let ist ähnlich wie var aber mit dem Unterschied, wie bei deinem Beispiel, dass, wenn der Click-Handler aufgerufen wird, er wieder den selben Variablenwert vorfindet, wie zu dem Zeitpunkt als er registriert wurde. Während bei var er den Endwert nach Durchlauf der Schleife vorfindet.

  • let ist ähnlich wie var aber mit dem Unterschied, wie bei deinem Beispiel, dass, wenn der Click-Handler aufgerufen wird, er wieder den selben Variablenwert vorfindet, wie zu dem Zeitpunkt als er registriert wurde. Während bei var er den Endwert nach Durchlauf der Schleife vorfindet.

    Gibt es dazu ein Beispiel für dumme ( also für mich ) der das verdeutlicht?

    Ich verstehe das so ,wenn "a" vor der Schleife den Wert 1 hat und dann die Schleife durchläuft, und währen des Schleifendurchlaufs bekommt "a" andere Werte ( zb ,2,3,4...).

    Ist die Schleife nun fertig,bekommt let wieder den Wetr "1" ,wie vor der Schleife.


    Ist das richtig so?

    Wahrscheinlich nicht .;(

  • wie spricht man mit jquery alle elemente in einer id an?


    ich meine zb so

    Code
    <div id="hallo"><span id="hallodu"></span></div>

    ich könnte ja jetzt

    $("span").bla machen aberdas spricht ja alle spans an .

    essoll nur span in diesen div sein. geht das zb so oder so

    $("#hallo > span").bla ????


    also so ging es nicht .

    weiss einer wie das geht ?? fals es so geht ??



    EDIT hat sich erledigt .. wenn es interesiert einfach das ">" weglassen

  • ja komischerweise wollte das nicht klappen nur ohne ">" . warum auch immer. vieleicht ist userscript daran schuld ,ich weiss es auch nicht was das alles wieder soll. sehe hier neues problem


    wie ersetze ich zahlen aus ein link. habe mal gegoogelt aber finde nix was ich verstehe


    eine einzelne zahl ersetzen ist kein prblem aber es gibt doch code der ales ersetzt zb so


    Code
    var links1=link1.replace("/([0-9]+)\.\d{4,}/g","NIX");




    aber das geht irgendwie nicht. komischer weisse passiert da gar nix ,nicht mal NIX erscheint.



    EDIT , ich sollte noch länger googeln und dann erst schreiben.


    habe es zwar hinbekommen ,aber verstehe nicht warum .. das mit diesen regex oder wie das heist ist nicht mein ding verstehe das nicht ganz.


    zu meinen problem hier habe es so gelöst


    Code
    var links1=link1a.replace(/\d+/,'');

    nur warum jetzt die zahlen weg sind verstehe ich trotzdem nicht ich sehe da nur ein d und das hat mit zahlen ja nicht viel zu tun

  • verstehe wieder nur bahnhof warum das wieder nicht geht .

    ich müsste ja in diesen beispiel in jeden textfeld das "JJ" reinschreiben . aber es erscheint nur im letzten textfeld. aber warum ?? ich sehe da kein fehler.

    Code
    for(a=1;a<=10;a++){
     document.getElementById('aa').innerHTML+='<input type="text" id="jj'+a+'" value="'+a+'">'
     
     try{
     document.getElementById('jj'+a+'').value='JJ'
     }catch(e){}
      }

    habe jetzt mehre varuianten ausprobiert die zu zeigen währe jetzt schwachsinn weil es die standart änderungen sind. aber das ergebniss ist immer das gleiche ,wenn dann geht nix weil ich ein fehler reingehauen habe ,oder es ist nur das letzte feld beschrieftet ,was für mich kein sinn ergibt weil es doch in schleife mit läuft

  • Das ist allerdings etwas verzwickt und unerwartet. Probiere einmal dies:

    Code
        for (a = 1; a <= 10; a++) {
                document.getElementById('aa').innerHTML += '<input type="text" id="jj' + a + '" value="' + a + '">';
                document.getElementById('jj' + a + '').value = 'JJ';
                console.log(document.getElementById('jj' + a + '').getAttribute('value'), document.getElementById('jj' + a + '').value);
            }

    Du siehst, dass die Zuweisung an "value" das Attribut "value" nicht ändert. Jedes Mal wenn Du das innerHTML änderst, wird es neu geparst und das Attribut wird wieder angezeigt.

    Die Lösung besteht darin, das Attribut zu setzen:

    Code
         for (a = 1; a <= 10; a++) {
                document.getElementById('aa').innerHTML += '<input type="text" id="jj' + a + '" value="' + a + '">';
                document.getElementById('jj' + a + '').setAttribute("value", 'JJ');
                console.log(document.getElementById('jj' + a + '').getAttribute('value'), document.getElementById('jj' + a + '').value);
            }

    Macht man es dagegen so:

    Code
        for (a = 1; a <= 10; a++) {
                var inp = document.createElement("input");
                inp.id = "jj" + a;
                inp.value = "JJ";
                document.getElementById('aa').append(inp);
            }

    sieht das Ergebnis im DOM so aus:


    html-seminar.de/woltlab/attachment/1286/


    Der Wert hat wie gewünscht "JJ" aber im DOM ist davon nichts zu sehen. Das HTML wird beim Einfügen nicht geparst.

  • hammer hart . das so was simples doch auf einmal so kompliziert sein kann. das hätte ich bestimmt nie rausgefunden( vieleicht durch zufall ).

    ich hatte sowas ja schon öfters gemacht und hat auch immer geklappt. weiss zwar nicht was da anders wahr,aber damals klappte es . da muss wohl irgendwas anders gewesen sein . wahrscheinlich das " + " bei innerHTML+= ,wenn ich das richtig sehe kam das problem von da oder nicht ? hätte ich vorher die divs mit create erstellt ,währe das problem nicht passiert. sehe ich das jetzt so richtig ??

  • wusstest ihr schon das manmit javascript auf der webcam zugreifen kann? also eigentlich ist das doch ein schädlicher code. einfach etwas ajax rein und die bilder an sich selbst senden. nagut das script müsste man noch einen unter jubbeln,aber trotzdem krass das es geht .hätte ich nicht gedacht

  • Heutzutage kann man sehr vieles mit JS machen, allerdings sollte das an eine Berechtigung im Browser gebunden sein.


    Wenn man dem Browser also nicht erlaubt, auf die Webcam zuzugreifen, funktioniert das auch nicht.


    In den meisten Fällen wird das standardmäßig deaktiviert sein, also besteht dort eigentlich keine wirkliche Gefahr.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!