zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden zähler zurücksetzen

Antwort
 
LinkBack Themen-Optionen Ansicht
  #11 (permalink)  
Alt 26.11.2018, 12:49
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 26.10.2018
Beiträge: 25
KATERchen befindet sich auf einem aufstrebenden Ast
Standard

Mhhh, das Beispiel verstehe ich jetzt nicht.
Ich werde die Seite mal hochladen, aber nicht mehr heute - muss erst alles einrichten. Mein Kopf ist jetzt auch kurz vorm explodieren, brauche mal ne Pause.
Auf jeden Fall aber erst mal ein ganz großes DANKE
Mit Zitat antworten
Sponsored Links
  #12 (permalink)  
Alt 27.11.2018, 10:51
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 26.10.2018
Beiträge: 25
KATERchen befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
Die Klassen machen hier keinen Sinn.

Du kannst im CSS (oder jQuery) Code mit .hd_nOL1 ul li auf die Elemente zugreifen.
Hey, das war mein allererstes jQuery-Script, da kann sowas schon mal passieren. Trotzdem danke.

Ich habe mein Script jetzt soweit hinbekommen, dass es eigentlich funktionieren solle:
Code:
$(document).ready(function(){
	
  var i;
  for (i = 97; i < 101; i++) {
    $("li a.overflow[data-select=" + i + "]").css({"display" : "block" , "opacity" : "1"});
  }   
  
  zaehler = 97;	  
  var counter = new Array();
  
  $( "a.verk_bM_Liste_next" ).on( "click", function() {
 
	var ArtNr = $(this).attr("data-ArtNr");

	if(counter.some(item => item.Nr === ArtNr)){
	$.each( counter, function() {
	    if (this.Nr == ArtNr) {
	        this.Zaehler = zaehler;
	    }
	});
	}
	else{
		counter.push({
            Nr: ArtNr,
            Zaehler: 97
        });  
	};
	
    for (var i = 0, theindex = -1; i < counter.length && theindex == -1; i++) {
        if (counter[i].Nr == ArtNr) {
            theindex = i;
        }
    }
	
    zaehler = counter[theindex].Zaehler;
    console.log(zaehler);

	var anzahl = $("ul#UL_" + ArtNr).children().length; // zählen der Listeneinträge
	var slides = anzahl / 4;

	if (zaehler < anzahl + 93){ 

      for (i = zaehler; i < zaehler + 4; i++) {  
        $("ul#UL_" + ArtNr + " li a.overflow[data-select=" + i + "]").css({"display" : "none" , "opacity" : "0"});
      }
    
      zaehler = zaehler + 4;
      for (i = zaehler; i < zaehler + 4; i++) {
        $("ul#UL_" + ArtNr + " li a.overflow[data-select=" + i + "]").css({"display" : "block" , "opacity" : "1"});
      }
    }
  });
  
  $("a.verk_bM_Liste_prev").on("click", function(){
	  
		var ArtNr = $(this).attr("data-ArtNr");
		Array.push(ArtNr); 
		first = Array.shift();
		if(Array != first) {zaehler = 97};
		var anzahl = $("ul#UL_" + ArtNr).children().length; // zählen der Listeneinträge
		var slides = anzahl / 4;

    if (zaehler > 100){  // 105
      for (i = zaehler; i < zaehler+5; i++) {  
		$("ul#UL_" + ArtNr + " li a.overflow[data-select=" + i + "]").css({"display" : "none" , "opacity" : "0"});
	  }
      
	  zaehler = zaehler-1; //104
	  for (i = zaehler; i > zaehler-4; i--) { 
	    $("ul#UL_" + ArtNr + " li a.overflow[data-select=" + i + "]").css({"display" : "block" , "opacity" : "1"});
	  }
	}
    if(zaehler > 99){
    zaehler = zaehler-3;
    }
  });
});
Wenn ich vorwärts drücke klappt auch alles, wann ich aber zurück gehen will bekomme ich in der Konsole eine Fehlermeldung: TypeError: "length" is read-only in Zeile 57. Da gibt es aber kein "length". Und bei dem einzigen, welches im Script steht verstehe ich den Fehler nicht.
Mit Zitat antworten
Sponsored Links
  #13 (permalink)  
Alt 27.11.2018, 13:35
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.913
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Du machst den Code immer komplizierter, ich versteh nicht warum. Wenn man die Logik verstehen würde könnte man sicher helfen, da das was du willst eigentlich ganz einfach ist. Aber ich finde keinen Ansatz.
Ehrlich gesagt erschließt sich mir nicht was du überhaupt machen willst. Ein wage Vermutung ergibt sich aus dem click Event.
Code:
  $("a.verk_bM_Liste_prev").on("click", function(){
Hier hast du in der Funktion Zugriff auf das Objekt auf das geklickt wurde, wenn das jeweils ein anderer Slider ist, dann kannst du diesem Objekt ein Zähler zufügen und benutzen.

Ich würde aber auf jeden Fall nicht mit so krummen Indexzahlen arbeiten, sondern einfach 0..x verwenden, dann brauchst du nicht so ein Murks. Wenn du dann statt Zahlen - aus welchen Grund auch immer - Buchstaben brauchst kann du diese an dem Ort berechnen wo du sie brauchst.


Den komischen Code vom Anfang des threads hast du aich wieder drin:
Code:
Array.push(ArtNr); 
		first = Array.shift();
		if(Array != first) {zaehler = 97};
Das ist auch Murks. "Array" ist eine native Konstruktorfunktion, es wäre seltsam wenn du diese als ersten Element eines Arrays benutzt.

Auch Array.push(ArtNr) ist falsch. Was soll das sein?

Wie gesagt du machst alles sehr kompliziert und hast schon einen reichlich wirren Code mit viel Murks. Da ist es schwer zu erkennen, was du eigentlich willst.

Einfacher wäre es, wenn du einen Ansatz ohne soviel Beiwerk erstellen würdest, wo man erkennen könnte was du machen willst und was passieren soll.
Mit Zitat antworten
  #14 (permalink)  
Alt 27.11.2018, 16:59
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 26.10.2018
Beiträge: 25
KATERchen befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
Den komischen Code vom Anfang des threads hast du aich wieder drin:
Nicht wieder, immer noch. Stimmt, habe ihn nur im ersten Teil rausgenommen, im Zweiten habe ich es vergessen.
Das die Codes so kompliziert sind liegt daran, dass ich immer nur Stückwerk mache - da eine Code-Zeile und da noch eine usw. Mir fehlt der Überblick über das gesamte Sctipt, aber das liegt daran, dass mein Gehirn für diese Aufgabe eigentlich nicht geschaffen wurde, ich es aber trotzdem unbedingt machen will. Ist mir damals schon bei PHP aufgefallen. Aber ich denke (und hoffe), so gaaaanz langsam wird es besser werden.

Ich habe jetzt erst mal die Seite hochgeladen: https://bit.ly/2QlSOAn
Mit Zitat antworten
  #15 (permalink)  
Alt 28.11.2018, 12:16
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 26.10.2018
Beiträge: 25
KATERchen befindet sich auf einem aufstrebenden Ast
Standard

Okay, ich habe das Script jetzt mal ein wenig aufgeräumt und kommentiert. Ich hoffe, es wird dadurch verständlicher.
Der erste Teil, also die Klicks nach rechts, funktionieren. Nun habe ich aber das Problem, dass ich das Array "counter" auch für die Klicks nach links nutzen muss, das geht aber nicht, weil es innerhalb einer Funktion entsteht (wenn ich da richtig gegoogelt habe). Wie kann ich dieses Array also in eine neue Funktion übergeben?

Wenn Du eine ganz andere Idee hast, bin ich auch dankbar.

Code:
$(document).ready(function(){
	
// Die Seite wird geladen und alle Slider gefüllt
  for (i = 97; i < 101; i++) {
    $("li a.overflow[data-select=" + i + "]").css({"display" : "block" , "opacity" : "1"});
  }   
  
  counter = new Array();
  
// Bei Klick nach rechts
  $( "a.verk_bM_Liste_next" ).on( "click", function() {
 
	var ArtNr = $(this).attr("data-ArtNr");

// Hier wird geprüft ob eine ArtNr bereits im Array enthalten ist 
// Wenn ja wird der entsprechende Zähler aktualisiert
	if(counter.some(item => item.Nr === ArtNr)){
	$.each( counter, function() {
	    if (this.Nr == ArtNr) {
	        this.Zaehler = zaehler;
	    }
	});
	}
// Ist die ArtNr noch nicht enthalten wird sie eingetragen und der Zähler auf 97 gesetzt
	else{
		counter.push({
            Nr: ArtNr,
            Zaehler: 97
        });  
		zaehler = 97;
	};
	
	var anzahl = $("ul#UL_" + ArtNr).children().length; // zählen der Listeneinträge
	var slides = anzahl / 4;

// Der eigentliche Slider
	if (zaehler < anzahl + 93){ 
      for (i = zaehler; i < zaehler + 4; i++) {  
        $("ul#UL_" + ArtNr + " li a.overflow[data-select=" + i + "]").css({"display" : "none" , "opacity" : "0"});
      }
    
      zaehler = zaehler + 4;
      for (i = zaehler; i < zaehler + 4; i++) {
        $("ul#UL_" + ArtNr + " li a.overflow[data-select=" + i + "]").css({"display" : "block" , "opacity" : "1"});
      }
    }
  });
  console.log(count);	
  
  
  
  
// Klick nach rechts FUNKTIONIERT NOCH NICHT
  $("a.verk_bM_Liste_prev").on("click", function(){
	  
		var ArtNr = $(this).attr("data-ArtNr");
		var anzahl = $("ul#UL_" + ArtNr).children().length; // zählen der Listeneinträge
		var slides = anzahl / 4;

    if (zaehler > 100){  // 105
      for (i = zaehler; i < zaehler+5; i++) {  
		$("ul#UL_" + ArtNr + " li a.overflow[data-select=" + i + "]").css({"display" : "none" , "opacity" : "0"});
	  }
      
	  zaehler = zaehler-1; //104
	  for (i = zaehler; i > zaehler-4; i--) { 
	    $("ul#UL_" + ArtNr + " li a.overflow[data-select=" + i + "]").css({"display" : "block" , "opacity" : "1"});
	  }
	}
    if(zaehler > 99){
    zaehler = zaehler-3;
    }
  });
});

Geändert von KATERchen (28.11.2018 um 12:19 Uhr)
Mit Zitat antworten
  #16 (permalink)  
Alt 29.11.2018, 00:35
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 23.01.2018
Beiträge: 145
basti1012 befindet sich auf einem aufstrebenden Ast
Standard

Dein Link geht bei mir nicht.
Istdas der ganze JsCode ?
Kannst du mal das html auch dazu posten? Wäre einfacher,dann kann man auch sehen was das werden soll. Bis jetzt binich da noch nicht ganz hinter gekommen
Mit Zitat antworten
  #17 (permalink)  
Alt 30.11.2018, 12:10
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 26.10.2018
Beiträge: 25
KATERchen befindet sich auf einem aufstrebenden Ast
Standard

Die richtige Adresse: TEST.PHP
Ist ja auch egal, Denic gibt die Daten ja nicht mehr raus.

Im Großen und Ganzen funktioniert es jetzt, so richtig aber leider immer noch nicht. Wenn man zwischen den Slidern hin und her klickt, stocken sie irgendwann. Hab das aber auch gerade erst festgestellt und noch nicht weiter geguckt. Auch der Code vom Script lässt sich sicher noch etwas vereinfachen.

Es gibt noch ein Script für das Menü und eins für die Lightbox mit Slider.
Mit Zitat antworten
  #18 (permalink)  
Alt 30.11.2018, 14:36
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 26.10.2018
Beiträge: 25
KATERchen befindet sich auf einem aufstrebenden Ast
Standard

So, jetzt funktioniert es - hoffe ich.

Code:
counter = new Array();
$(document).ready(function(){
	
// Die Seite wird geladen und alle Slider gefüllt
  for (i = 1; i < 5; i++) {
    $("li a.overflow[data-select=" + i + "]").css({"display" : "block" , "opacity" : "1"});
  }   
  
// Bei Klick nach rechts
  $( "a.verk_bM_Liste_next" ).on( "click", function() {
 
	var ArtNr = $(this).attr("data-ArtNr");

// Hier wird geprüft ob eine ArtNr bereits im Array enthalten ist 
// Wenn ja wird der entsprechende Zähler aktualisiert
	if(counter.some(item => item.Nr === ArtNr)){
	$.each( counter, function() {
	    if (this.Nr == ArtNr) {
	        this.Zaehler = zaehler;
	    }
	});
	}
// Ist die ArtNr noch nicht enthalten wird sie eingetragen und der Zähler auf 97 gesetzt
	else{
		counter.push({
            Nr: ArtNr,
            Zaehler: 1
        });   
		zaehler = 1;
	};
	
	var anzahl = $("ul#UL_" + ArtNr).children().length; // zählen der Listeneinträge
	var slides = anzahl / 4;


// Der eigentliche Slider
	if (zaehler < anzahl-4){ 
      for (i = zaehler; i < zaehler + 4; i++) {  
        $("ul#UL_" + ArtNr + " li a.overflow[data-select=" + i + "]").css({"display" : "none" , "opacity" : "0"});
      }
    
      zaehler = zaehler + 4;
      for (i = zaehler; i < zaehler + 4; i++) {
        $("ul#UL_" + ArtNr + " li a.overflow[data-select=" + i + "]").css({"display" : "block" , "opacity" : "1"});
      }
console.log(zaehler);

$.each( counter, function() {
    if (this.Nr == ArtNr) {
        this.Zaehler = zaehler;
    }
});

      console.log(counter);
    }
  });
  
  
  
// Klick nach rechts 
  $("a.verk_bM_Liste_prev").on("click", function(){
	  
	  var ArtNr = $(this).attr("data-ArtNr");
	  console.log(counter);

 		var ArtNr = $(this).attr("data-ArtNr");
		var anzahl = $("ul#UL_" + ArtNr).children().length; // zählen der Listeneinträge
		var slides = anzahl / 4;
		  
    if (zaehler > 3){  // 105
      for (i = zaehler; i < zaehler+5; i++) {  
		$("ul#UL_" + ArtNr + " li a.overflow[data-select=" + i + "]").css({"display" : "none" , "opacity" : "0"});
	  }
      
	  zaehler = zaehler-1; //104
	  for (i = zaehler; i > zaehler-4; i--) { 
	    $("ul#UL_" + ArtNr + " li a.overflow[data-select=" + i + "]").css({"display" : "block" , "opacity" : "1"});
	  }
	}

    if(zaehler > 3){
    zaehler = zaehler-3;
    }
    
 // Aktueller Zähler wird bei der ArtNr aktualisiert    
	if(counter.some(item => item.Nr === ArtNr)){
		$.each( counter, function() {
		    if (this.Nr == ArtNr) {
		        this.Zaehler = zaehler;
		    }
		});
		}
	
	// Ist die ArtNr noch nicht enthalten wird sie eingetragen und der Zähler auf 4 gesetzt
		else{
			counter.push({
	            Nr: ArtNr,
	            Zaehler: 5
	        });  
			Zaehler= 5
		};
	    console.log(zaehler);
  });
});
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Button auf Standard zurücksetzen? tscho CSS 10 27.02.2012 17:40
Besucher Zähler einbinden Georges974 (X)HTML 2 03.05.2009 21:36
Problem mit auto-increment: Will eine Lücke in den IDs Füllen ohne Zähler zu erhöhen braindead Serveradministration und serverseitige Scripte 5 17.09.2007 15:48
CSS-Eigenschaften auf default-Werte zurücksetzen vladivar CSS 1 06.09.2007 12:00
Zähler Despairing Serveradministration und serverseitige Scripte 6 08.08.2007 21:24


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:14 Uhr.