[SAMMELTHREAD] Kleine Coding Fragen

  • Mach ich hier was falsch?

    Kann ich dir so nicht sagen. Kommt ne Fehlermeldung o.ä.? Code sieht für mich in Ordnung aus.


    Aber so wie ich das jetzt verstanden habe, sucht er es sich dabei selbst den Stylesheet heraus, welchen er nehmen muss oder nicht?

    Ja, jeder Browser Ordnet sich selbst einen bestimmten Medientyp zu, und lädt dann nur die Stylesheets die für in in Frage kommen. Alternativ kannst du du auch direkt in deiner CSS Datei verschiedene Regeln für verschiedene Geräte angeben. Dafür kannst du auch, wie im <link> Element, den Medientyp angeben, oder aber z.b anhand der Breite, Höhe, Orientierung (Portrait oder Landscape) oder Auflösung des Clienten die Webseite anders anzeigen (Wie es z.b. Responsive Design Frameworks wie Bootstrap machen). Auf der Google Developers Seite zu CSS media queries ist ein recht verständliches Beispiel gezeigt.

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Kann ich dir so nicht sagen. Kommt ne Fehlermeldung o.ä.? Code sieht für mich in Ordnung aus.


    Eine Fehlermeldung oder dergleichen taucht nicht auf - jedoch wird, wenn ich ein "document.write" mit einem Texteinfüge, wird der Text bei "Abbrechen" geprintet und bei "Ja" kommt nichts, daher vermute ich, dass etwas am Code nicht stimmen kann.
    Ich werde mich mal mit den Media Queries auseinandersetzen und es damit probieren.

  • Kommt drauf an was genau du mit "Normale Anwendungen" meinst.


    Damit meine ich schlicht und einfach, ob node.js nur für Socketanwendungen ausgelegt ist, wie es diese ganzen Webseiten vermuten lassen, weil diese eben nur das eine Thema "Sockets in node.js" behandeln oder ob sich damit jeder mögliche Javascriptcode serverseitig implementieren lässt.
    Es geht mir primär darum, dass ich halt (evtl. durch node.js) den Javascriptcode, den ich auf meinen Webseiten verwende, auch serverseitig implementieren könnte, damit er eben nicht für den Endanwender sichtbar wäre.

    Die bekommst auch ohne Node.js hin ^^


    Kann sein, aber mir geht es nicht um die Sockets, sondern primär um Obengenanntes.

  • Die Aufgabe von node.js ist Primär Javascript Code auf dem Server auszuführen. Was genau du damit machst ist dir überlassen, aber das ist weitaus mehr als "nur" Socket Anwendungen. Theoretisch geht da alles was du auch mit C/PHP/Ruby/Whatever aufm Server machen kannst.
    Ob du deinen Client-Javascript Code auf den Server umlagern kannst kommt ganz darauf an was dein Code macht, da du ja mit serverseitigem Code keine Zugriff auf den Browser (window, document usw) hast. Du kannst dir das ganze eher wie PHP vorstellen, von den möglichkeiten her (und natürlich viel mehr, weil PHP suckt <3), nur eben in Javascript.

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Okay, wenn kein Zugriff auf den Browser besteht, deckt sich das leider nicht mit meinen Interessen.
    Danke für die Erklärung.


    //E: Mal etwas Anderes:

    Apache Configuration
    RewriteEngine on 
    RewriteRule ^index.php?page=(.*)$ $1.php


    Möchte mittels einer .htaccess Datei ein Url des Formats
    index.php?page=bla
    zu
    bla.php
    umleiten.


    Leider gibt es bei diesem Beispiel jedes Mal Probleme.
    Habe auch bereits versucht, einzelne Sonderzeichen zu escapen, leider hat das auch nicht funktioniert.


    Woran liegt es?


    Danke im Voraus.

  • Moin.


    Ich wollt hier mal fragen, ob jemand sich mit JS auskennt und mir bei einer Kleinigkeit behilflich sein könnte.
    Es geht um ein Countdown einer Seite. Und zwar wollte ich, dass der Counter abläuft, wie man es bekanntlich kennt.
    In meinem Fall ist es hier aber so, dass die Berechnung, wie mir scheint, falsch läuft. Jedoch hab ich kein Schimmer, wo der Fehler genau liegen könnte.


    Hier mal die Zeile, wo ich es konfiguriert habe:

    JavaScript
    $('#counter').countdown({
      timestamp : (new Date()).getTime() + 73*10*40*60*1000
     });


    Wenn ich es hier einstelle, dann kommt auf der Index "2 Tage" statt "73 Tage" an.
    Wisst ihr woran es liegen könnte oder bräuchtet ihr mehr Zeilen?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • also sprich "index.php#tab1".


    Das ist ein sogenannter Fragmentbezeichner ;)


    Arbeiten tust du ganz leicht damit, diese Seite hat ein einfaches Beispiel wie du mit solchen Ankern arbeitest:


    http://de.selfhtml.org/html/verweise/anzeige/a_name.htm


    Schau dir einfach mal den Source an ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Und wie arbeite ich jetzt damit, sprich wie lese ich sie nun aus?


    Bist du blind? :huh:


    Arbeiten tust du ganz leicht damit, diese Seite hat ein einfaches Beispiel wie du mit solchen Ankern arbeitest:


    http://de.selfhtml.org/html/verweise/anzeige/a_name.htm


    Schau dir einfach mal den Source an


    Oder hier: http://de.selfhtml.org/html/verweise/projektintern.htm#anker


    mfg. :rolleyes:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Scheinbar hat sich bei meinem Fehler, den ich weiter oben bereits gelöst bekommen habe, ein weiter eingeschlichen.
    Und zwar geht der Countdown, wenn man die Seite neu lädt, immer wieder von der Zeit los, die ablaufen sollte.
    Dabei sollte es theoretisch so ablaufen, dass wenn es von 1 Jahr auf 0 Tage runter geht, er die Zeit auch "behält" und nicht, dass wenn ich die Seite nochmal besuche, der Countdown wieder von 1 Jahr beginnt.
    Kann mir da ggf. jemand weiterhelfen, wie man das Problem lösen könnte?

  • Scheinbar hat sich bei meinem Fehler, den ich weiter oben bereits gelöst bekommen habe, ein weiter eingeschlichen.
    Und zwar geht der Countdown, wenn man die Seite neu lädt, immer wieder von der Zeit los, die ablaufen sollte.
    Dabei sollte es theoretisch so ablaufen, dass wenn es von 1 Jahr auf 0 Tage runter geht, er die Zeit auch "behält" und nicht, dass wenn ich die Seite nochmal besuche, der Countdown wieder von 1 Jahr beginnt.
    Kann mir da ggf. jemand weiterhelfen, wie man das Problem lösen könnte?

    Ist es ein festes Datum, bis das er runterzählen soll? Dann kannste das mit new Date(ms) berechnen.
    Bei einem dynamischen entweder mit Cookies setzen oder mit dem LocalStorage ;)

  • Bei einem dynamischen entweder mit Cookies setzen oder mit dem LocalStorage ;)

    Das würde dann aber für jeden Besucher einen eigenen Countdown festlegen.


    RayJohnson: Wäre gut zu wissen obs ein festes Datum ist. Falls ja, wie Tion sagte mit Date arbeiten. z.b:

    JavaScript
    new Date(2014, 10, 9, 15).getTime() - Date.now()


    Zu erst mit dem Date Object den Zeitpunkt angeben, an dem der Countdown abgelaufen ist (in dem beispiel hier morgen 15 Uhr).
    Dann .getTime() nutzen um den zeitpunkt in Millisekunden zu bekommen.
    Dann ziehen wir davon den aktuellen Timestamp (Date.now()) ab und erhalten die Differenz in Millisekunden.

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Wäre gut zu wissen obs ein festes Datum ist. Falls ja, wie Tion sagte mit Date arbeiten. z.b:


    Jo, es handelt sich hierbei um ein festes Datum.


    Ich hab mich nochmal dran versucht. Der beste in JS bin ich nun wirklich nicht, aber als ich den Code änderte, stand beim Countdown auf der Index "NNNN" (Tage) "NNNN" (Stunden) "NNNN" (Minuten) "NNNN" (Sekunden)
    Und so wie ich mich kenne, ist da garantiert was falsch, allerdings weiß ich nicht genau was. ^^


    JavaScript
    $('#counter').countdown({
    		timestamp : (new Date(2014, 10, 10, 10)).getTime() - Date.now()
    	});


    //e: Fehler lag an der Klammer, jedoch funktionierts dennoch nicht wie gewollt. :/
    Hier mal den gesamten Countdown-Script:

    JavaScript
    /** * @name		jQuery Countdown Plugin * @author		Martin Angelov * @version 	1.0 * @url			http://tutorialzine.com/2011/12/countdown-jquery/ * @license		MIT License */(function($){	// Number of seconds in every time division	var days	= 24*60*60,		hours	= 60*60,		minutes	= 60;	// Creating the plugin	$.fn.countdown = function(prop){		var options = $.extend({			callback	: function(){},			timestamp	: 0		},prop);		var left, d, h, m, s, positions;		// Initialize the plugin		init(this, options);		positions = this.find('.position');		(function tick(){			// Time left			left = Math.floor((options.timestamp - (new Date())) / 1000);			if(left < 0){				left = 0;			} 			// Number of days left			d = Math.floor(left / days);			updateDuo(0, 1, d);			left -= d*days;			// Number of hours left			h = Math.floor(left / hours);			updateDuo(2, 3, h);			left -= h*hours;			// Number of minutes left			m = Math.floor(left / minutes);			updateDuo(4, 5, m);			left -= m*minutes;			// Number of seconds left			s = left;			updateDuo(6, 7, s);			// Calling an optional user supplied callback			options.callback(d, h, m, s);			// Scheduling another call of this function in 1s			setTimeout(tick, 1000);		})();		// This function updates two digit positions at once		function updateDuo(minor,major,value){			switchDigit(positions.eq(minor),Math.floor(value/10)%10);			switchDigit(positions.eq(major),value%10);		}		return this;	};	function init(elem, options){		elem.addClass('countdownHolder');		// Creating the markup inside the container		$.each(['Days','Hours','Minutes','Seconds'],function(i){			var boxName;			if(this=="Days") {				boxName = "DAYS";			}			else if(this=="Hours") {				boxName = "HRS";			}			else if(this=="Minutes") {				boxName = "MNTS";			}			else {				boxName = "SECS";			}			$('<div class="count'+this+'">' +				'<span class="position">' +					'<span class="digit static">0</span>' +				'</span>' +				'<span class="position">' +					'<span class="digit static">0</span>' +				'</span>' +				'<span class="boxName">' +					'<span class="'+this+'">' + boxName + '</span>' +				'</span>'			).appendTo(elem);			if(this!="Seconds"){				elem.append('<span class="points">:</span><span class="countDiv countDiv'+i+'"></span>');			}		});	}	// Creates an animated transition between the two numbers	function switchDigit(position,number){		var digit = position.find('.digit')		if(digit.is(':animated')){			return false;		}		if(position.data('digit') == number){			// We are already showing this number			return false;		}		position.data('digit', number);		var replacement = $('<span>',{			'class':'digit',			css:{				top:0,				opacity:0			},			html:number		});		// The .static class is added when the animation		// completes. This makes it run smoother.		digit			.before(replacement)			.removeClass('static')			.animate({top:0,opacity:0},'fast',function(){				digit.remove();			})		replacement			.delay(100)			.animate({top:0,opacity:1},'fast',function(){				replacement.addClass('static');			});	}})(jQuery);

    Einmal editiert, zuletzt von RayJohnson ()