PS: Jetzt getestet und war noch fehlerhaft. Die Funktion muss so aussehen:
Beiträge von Sempervivum
-
-
Der Kern der Sache scheint mir dieses zu sein:
Ich vermute, Du willst die Einträge aus nameValue in die Felder unten übertragen. nameValue ist jedoch keine Funktion und die Anweisungen, die darin stehen, werden nicht ausgeführt durch nameValue[pos], sondern nur ein Mal, wenn Du diese Struktur definierst. Vermutlich würde dies tun, was Du vor hast:
Code
Alles anzeigenconst nameValue = { knightsvalue: { hp: 1520472, Atk: 17632, // ebenso alle weiteren Eintraege aendern document.getElementById('P_Def').innerText = 7832, document.getElementById('M_Def').innerText = 6096, document.getElementById('Mp_Recovery_Atk').innerText = 210, document.getElementById('Crit').innerText = 150, document.getElementById('Acc').innerText = 100, document.getElementById('Cc_Resist').innerText = 150, document.getElementById('Penetration').innerText = 150, document.getElementById('P_Dodge').innerText = 250, document.getElementById('M_Dodge').innerText = 250, document.getElementById('Atk_Speed').innerText = 1000 }, warriorsvalue: { // alle Elemente wie oben aendern document.getElementById('Hp').innerText = 1291376, document.getElementById('Atk').innerText = 20032, document.getElementById('P_Def').innerText = 6528, document.getElementById('M_Def').innerText = 7832, document.getElementById('Mp_Recovery_Atk').innerText = 235, document.getElementById('Acc').innerText = 100, document.getElementById('Crit').innerText = 150, document.getElementById('Penetration').innerText = 150, document.getElementById('P_Dodge').innerText = 100, document.getElementById('M_Dodge').innerText = 100, document.getElementById('Atk_Speed').innerText = 1000, document.getElementById('Cc_Resist').innerText = 150 }, };Und dann in der Funktion:
Code
Alles anzeigenfunction statsValue(pos) { //nameValue[pos]; var obj = nameValue[pos] for (var property in obj) { if (obj.hasOwnProperty(property)) { document.getElementById(property).innerText = obj[property]; } } console.log('2'); console.log(pos); };Ungetestet, versuche es mal so.
-
Möglicher Weise bindest Du irgend welche Dateien ein, CSS oder JS oder PHP durch include und die Pfade passen dann nicht mehr. Wenn Du es online hast, dann poste die URL. Möglicher Weise gibt auch die Console Hinweise, was falsch läuft.
-
Ob und wo die Console in Sublime zu finden ist, weiß ich leider nicht. In jedem Fall findest Du sie aber in deinem Browser: F12 in IE und Edge, Strg+Umsch+I in den anderen.
ZitatBzw weiß nicht, ob es ratsam ist, auf eine externe Lösung zurückzugreifen.
Was meinst Du damit?
-
Die Console zeigt dir an, wo das Problem liegt: Zeile 2 des Javascript sieht so aus:
const totalQuestionSpan==document.querySelector(".total-question");
Da hast Du ein doppeltes statt einem einfachen Gleichheitszeichen.
-
Du willst doch zwei Dateien haben, in denen das HTML für body steht, body.php und body_mobile.php. Dann bindest Du in body.php die header_web und in body_mobile.php die header_mobile ein.
-
Denke schon, dass Du das richtig verstehst. querySelectorAll liefert eine Nodelist, das ist im wesentlichen ein Array und im Clickhandler liefert this das geklickte Element. Und innerText dann den Text des div.
-
-
Dein Code sieht ja so aus:
Code
Alles anzeigenvar btnClick = function(){ const output = document.getElementById('ausgabe'); //let nodeItem = elem.item(index) const test = document.querySelector('.btn') output.innerText = 'Klick: ' + this.innerText; }; document.querySelectorAll('.btn').forEach( function (elem, index) { elem.addEventListener('click', btnClick); });Wenn Du elem und index an die Funktion btnClick übergeben willst, kannst Du diese Funktion nicht als Referenz übergeben sondern musst die Parameter explizit übergeben:
Code
Alles anzeigenvar btnClick = function(elem, index){ const output = document.getElementById('ausgabe'); //let nodeItem = elem.item(index) //const test = document.querySelector('.btn') output.innerText = 'Klick: ' + elem.innerText; }; document.querySelectorAll('.btn').forEach( function (elem, index) { elem.addEventListener('click', function() { btnClick(elem, index); }); });Wenn Du die Funktion als Referenz übergibst, hast Du jedoch Zugriff auf den geklickten button über this :
Code
Alles anzeigenvar btnClick = function(){ const output = document.getElementById('ausgabe'); //let nodeItem = elem.item(index) //const test = document.querySelector('.btn') //Unter this hast Du Zugriff auf den Button, der geklickt wurde: output.innerText = 'Klick: ' + this.innerText; }; document.querySelectorAll('.btn').forEach( function (elem, index) { elem.addEventListener('click', btnClick); }); -
Der Validator beanstandet es nicht, wenn Leerzeichen um die Tilde herum sind und auch meinen Browser (Opera) stört es nicht.
-
Zitat
dass das Feld NAME doch Zahlen durchgehen lässt, obwohl ich mit preg_matsch nur Buchstaben zulasse
"/^[a-zA-Z äöüßáéíóú]/"
Das liegt daran, dass Du nicht bis zum Stringende prüfst, so wird nur das erste Zeichen gecheckt. Dies sollte funktionieren: "/^[a-zA-Z äöüßáéíóú]+$/"
-
Zitat
kannst du den Pfad mittels PHP auslesen und an dein JavaScript Script senden lassen.
Keine Ahnung, wie das funktionieren soll. Der Code im Eingangsposting liest die Datei lokal und speichert sie auch lokal.
-
Zitat
Dies geht dann so : #firstelement:hover .braun{
background-color: red;
}
Leider funktioniert dies jedoch nicht
Das hängt vom HTML ab. Ich nehme mal an, dass die .braun nachfolgende Geschwisterelemente sind. Dann muss man statt eines Leerzeichens eine Tilde im Selektor verwenden:
-
Wenn ich das richtig sehe, wird das PHP ja auch geparst, wenn Du die Dateien mit Ajax lädst. Also einfach die Includes in body.php und body_mobile.php drin lassen und es sollte funktionieren.
-
Ich sehe, Du hast jQuery gar nicht eingebunden, dann kann es nicht funktionieren.
Das Skript im Head war schon OK.
-
Beim Durchlesen deines Codes kann ich keine Fehler erkennen. Ajax, und dieses jQuery-load ist ja Ajax, braucht jedoch einen Webserver, wenn Du die Datei einfach mit file: öffnest, wird es nicht funktionieren. Die Console müsste entsprechende Hinweise geben.
-
Nein, so geht das nicht, das PHP muss ja schon auf dem Server zur Verfügung stehen, wenn Du auf dem Client bist und mit Javascript arbeitest, ist es zu spät.
Mache es genau wie mit dem Inhalt von body: Die URL abhängig von der Fensterbreite zur Verfügung stellen und mit jQuery-load in den Header hinein laden.
-
Zitat
dass ich immer manuell den Ordner auswählen muss und das Script nicht die Datei im gleichen Ordner wieder speichert, aus dem ich die Datei geladen habe.
Hat jemand vlt. Eine Idee wie man das machen kann?
Leider nicht: Aus Sicherheitsgründen ist der Pfad, aus dem eine Datei geladen wird, in Javascript nicht verfügbar.
-
Ganz so einfach ist es nicht, denn das audio-Element unterstützt keine Playlists, diese muss man selber bauen. Du findest aber Beispiele im Netz.
Und wenn Du die Dateien aus einem Verzeichnis auslesen und in der Playlist verwenden willst, brauchst Du PHP. Mit der Funktion glob() kannst Du die Dateien auslesen und daraus die Struktur generieren, die deine Playlist braucht.
-
Oh, mein Fehler, dass muss in Anführungszeichen.