PPS: Habe noch dieses gefunden:
http://forums.mozillazine.org/viewtopic.php?f=27&t=29178
Anscheinend sind nicht-nummerische Schlüssel doch möglich beim Array. Offensichtlich funktioniert das Sortieren eines solchen Arrays jedoch nicht.
PPS: Habe noch dieses gefunden:
http://forums.mozillazine.org/viewtopic.php?f=27&t=29178
Anscheinend sind nicht-nummerische Schlüssel doch möglich beim Array. Offensichtlich funktioniert das Sortieren eines solchen Arrays jedoch nicht.
PS: Habe jetzt ein wenig getestet und das Problem scheint ein anderes zu sein. Hier:
vermengst Du Objekte und Arrays. Bei Array muss der Schlüssel nummerisch sein. Was ich nicht verstehe ist, dass dabei kein Fehler angezeigt wird. Die Console zeigt dieses Konstrukt zwar an, aber mit der Länge 0 und die Sortierung funktioniert nicht, die Callback-Funktion wird nicht aufgerufen.
Erzeugt man das Array so:
wird es anschließend korrekt sortiert.
Schon, aber mit der letzten Zeile
wandelst Du es wieder in ein Objekt um und hast die selben Probleme, dass die Reihenfolge undefiniert ist. Ich hatte deinen Code so verstanden, dass Du das Array nur als Zwischenergebnis verwendest.
Ich weiß ja nicht, was Du mit dem Ergebnis vor hast, aber wenn Du eine sortierte Reihenfolge brauchst, musst Du das Array verwenden.
Die Reihenfolge der Elemente in einem Objekt ist undefiniert, siehe hier die Antwort von NickFitz:
https://stackoverflow.com/questions/1069…-property-value
Daher können die Elemente in einem Objekt auch nicht sortiert werden. Einziger Ausweg ist, das Array zu verwenden, das Du ja schon erzeugt hast.
Offensichtlich ist es so, dass sich die letzte Mediaquery durchsetzt, wenn diese sich auf das selbe Element beziehen:
Anscheinend geht es mal wieder nicht, ohne eine fertige Lösung zu posten. So funktioniert es:
<style>
.langspec-content {
display: none;
}
</style>
<div class="langspec-content" id="content-german">
Dies ist der deutsche Text
</div>
<div class="langspec-content" id="content-english">
This is the english text
</div>
<div class="langspec-content" id="content-default">
Dies ist der Default-Text, wenn keine Sprache erkannt wird
</div>
<script>
if (navigator.language.indexOf("en") > -1) {
document.getElementById("content-english").style.display = "block";
} else if (navigator.language.indexOf("de") > -1) {
document.getElementById("content-german").style.display = "block";
} else {
document.getElementById("content-default").style.display = "block";
}
</script>
Alles anzeigen
Wie es geht, wird hier mit einem Beispiel beschrieben, was fast genau auf deine Aufgabenstellung passt:
https://wiki.selfhtml.org/wiki/JavaScript/Navigator/language
Warum ist es denn bei dir nicht möglich, es serverseitig zu machen?
Eine weitere Option ist die Auswertung des HTTP-Headers Accept-Language:
https://stackoverflow.com/questions/1352…guage-detection
Sie empfehlen dies als bevorzugte Methode:
Das Problem hatte ich auch und es lag bei mir daran, dass die Index-Variablen anderweitig verwendet und verändert wurden. Versuche, es so zu kapseln:
var counter = 2;
var whichBloons = [1, 2];
var bloonCounter = [5, 3];
var timeLapse = [0, 1];
var intv = 3000;
(function () {
var idx1 = 0, idx2 = 0;
function startCreate() {
var idx2 = 0;
setTimeout(function () {
// hier den ersten Bloon entspr. idx1 erzeugen
console.log("create bloon " + whichBloons[idx1] + " " + Date.now());
idx2++;
var timer = setInterval(function () {
// hier den naechsten Bloon entspr. idx1 erzeugen
console.log("create bloon " + whichBloons[idx1] + " " + Date.now());
idx2++;
if (idx2 == bloonCounter[idx1]) {
clearInterval(timer);
idx1++;
if (idx1 < counter) startCreate()
else console.log("finished, next level");
}
}, intv);
}, timeLapse[idx1] * 1000);
}
startCreate();
})();
Alles anzeigen
Doch, der ändert sich in Zeile 20. Ich habe dein Vorhaben so verstanden:
idx1 = 0:
0 Sek. warten
5-mal bloom 1 erzeugen, aber nicht direkt hintereinander, sondern mit einem Intervall von 3 Sek (intv)
idx1 = 1:
1 Sek. warten
3-mal bloom 2 erzeugen, aber nicht direkt hintereinander, sondern mit einem Intervall von 3 Sek (intv)
(mit den (willkürlichen) Beispielwerten aus meinem Code)
Prüfe mal, ob ich das richtig verstanden habe und dies das tut, war Du dir vorstellst:
<script>
var counter = 2;
var whichBloons = [1, 2];
var bloonCounter = [5, 3];
var timeLapse = [0, 1];
var intv = 3000;
var idx1 = 0, idx2 = 0;
function startCreate() {
var idx2 = 0;
setTimeout(function () {
// hier den ersten Bloon entspr. idx1 erzeugen
console.log("create bloon " + whichBloons[idx1]);
idx2++;
var timer = setInterval(function () {
// hier den naechsten Bloon entspr. idx1 erzeugen
console.log("create bloon " + whichBloons[idx1]);
idx2++;
if (idx2 == bloonCounter[idx1]) {
clearInterval(timer);
idx1++;
if (idx1 < counter) startCreate()
else console.log("finished, next level");
}
}, intv);
}, timeLapse[idx1] * 1000);
}
startCreate();
</script>
Alles anzeigen
Das ist auf jeden Fall mit CSS zu realisieren. Informiere dich über Flexlayout:
https://www.html-seminar.de/css-flexbox.htm
https://css-tricks.com/snippets/css/a-guide-to-flexbox/
und Mediaqueries:
Schön, dass Du eine Lösung gefunden hast. Wie so oft gibt es aber auch eine vorgefertigte Funktion, die das tut:
https://wiki.selfhtml.org/wiki/JavaScrip…/Number/toFixed
Selber verwende ich Swiper:
idangero.us/swiper/
Dieses sollte dem entsprechen, was Du suchst:
https://idangero.us/swiper/demos/110-slides-per-view.html
wenn Du die Autoplay-Option hinzu fügst:
Versuch macht kluch: Man teste z. B. dies:
$testarr = [['abcd'=>[1, 2], ['xyz'=>[1, 2]]]];
var_dump($testarr[0]['abcd'][1]);
var_dump($testarr[0]['abcd'[1]]);
var_dump('abcd'[2]);
liefert diese Ausgabe:
html-seminar.de/woltlab/attachment/1699/
Was mich betrifft, so habe ich diesen Thread gelesen, aber es war mir zu umfangreich, um dort einzusteigen. Hast Du die Fehleranzeige eingeschaltet? Was heißt genau "funktioniert nicht"?
Zitatin dem man sich nur den neuesten Eintrag holt
Ich bin von dieser Aussage des TO ausgegangen:
Zitatwo ich die Werte zusätzlich brauche und eben auch diesen einen "Live-Wert".
Verstehe ich so, dass er alle Einträge auf Clientseite braucht.
Um auf deine ursprüngliche Frage zurück zu kommen:
ZitatDiese Tabelle wird dann mithilfe von json.encode an das HTML-file übergeben wo ich die Werte zusätzlich brauche und eben auch diesen einen "Live-Wert".
Das ist in wenigen Zeilen zu machen:
echo '<script> var data = ' . json_encode($data) . ';<script>;
mysql_close($con);
?>
<script>
// array nach Zeitstempel sortieren
data.sort(function (l,u) {
return l.[0] - u[o];
});
// jetzt steht der neueste Eintrag an erster Stelle
var latestVoltage = data[0][1];
</script>
Alles anzeigen
(ungetestet, da ich das ganze Umfeld mit der DB nicht habe.)
Wenn dieser Livewert zyklisch aktualisiert werden soll, holst Du ihn am besten mit Ajax, wie von Arne beschrieben.
Also mir geht es so, dass ich das Ganze nicht verstehe. Diese Funktion getTable steht da ohne den Zusammenhang, wo sie aufgerufen wird und was das für Parameter sind. Keine Ahnung, was ein Payload ist. Und das ganze wäre einfacher zu lesen, wenn Du statt des PHP das generierte HTML und JS posten würdest, denn offenbar liegt das Problem ja auf Javascript-Seite.
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.