Frage zu Javascript-Kursaufgabe: Habe ich möglicherweise etwas vergessen oder falsch gemacht?

Ich mache derzeit für einen Aufnahmetest auf der FH einen Schnupperkurs in Javascript und komme eigentlich ganz gut zurecht, aber habe ein Problem mit dieser Aufgabe. Wenn ich mein Ergebnis überprüfen möchte, sagt mir dieses, dass ich nicht alles korrekt gelöst hätte, da mein if ... else anscheinend noch nicht ganz richtig umgesetzt ist.

Das wäre mein Lösungsansatz gewesen. Ich habe auch, egal welchen Wert ich geändert habe, keine falsche Lösung bekommen. Habe ich möglicherweise etwas vergessen oder falsch gemacht?

/*
 * Programming Quiz - Checking Your Balance (3-5)
 */
// change the values of balance, checkBalance and isActive to test your code
var balance = 50;
var checkBalance = true;
var isActive = true;

if (checkBalance === false) {
  console.log("Have a nice day");
}
else if (checkBalance === true && isActive === true && balance > 0) {
  console.log("Your Balance is $" +balance+".");
}
else if (checkBalance === true && isActive === false) {
  console.log("Your account is no longer active");
}
else if (checkBalance === true && isActive === true && balance === 0) {
  console.log("Your account is empty");
}
else if (checkBalance === true && isActive === true && balance < 0) {
  console.log("Your Balance is negative. Please contact bank");
}

Ich hoffe mir kann jemand weiterhelfen. 😃

Computer, Programmieren, JavaScript, JavaScript-Code
5 Antworten
Discord Bot -> Fehler bei MYSQL?

Ich bin kein wirklich fähiger programmierer in hinsicht Discord, aber bekomm immer bei: con.query(`SELECT display_name FROM wp_users WHERE user_email = '${email}'`, (err, displayname) => {

if (err) throw err;

ein error. Jemand ne ahnung?

Wahrscheinlich sind eh recht viele sachen drin die ihr anderst machen würdets, aber ich hab auch nicht wirklich gute Guide's gefunden in hinsicht eines verifikations-bot.

Über tipps was ich besser machen kann würde ich mich auch freuen :)

Danke schonmal für die hilfe :)

Mein Code:

const Discord = require("discord.js");

const client = new Discord.Client();

const mysql = require("mysql");

const config = require('./config.json');

client.on("ready", () => {

console.log("I am ready!");

});

client.login(config.token);

var con = mysql.createConnection({

host: config.host,

user: config.user,

password: config.password,

database: config.database

});

client.on("message", message => {

if (message.author.bot) return;

// This is where we'll put our code.

if (message.content.indexOf(config.prefix) !== 0) return;

const args = message.content.slice(config.prefix.length).trim().split(/ +/g);

const command = args.shift().toLowerCase();

let member = message.member;

if(command === "verify") {

let email = message.content.substring(message.content.indexOf(" ") + 1, message.content.length);

let role = message.guild.roles.find(r => r.name === "Member");

con.query(`SELECT display_name FROM wp_users WHERE user_email = '${email}'`, (err, displayname) => {

if (err) throw err;

message.reply(`3`);

member.addRole(role).then(user=> message.reply(`Deine Rolle hat sich geändert / Your role has changed`)).catch(console.error);

member.setUsername(displayname).then(user => message.reply(`Dein Nick hat sich geändert / Your Nick has changed`)).catch(console.error);

message.delete(1000); //Supposed to delete message

})

}else

if(command === "hello"){

message.reply(`Hi`);

}

});

Java, JavaScript, Bot, JavaScript-Code, discord
2 Antworten
SVG funktioniert nicht?

In allen Editoren Online funktioniert folgendes:

<script>
function setSvg(month, day){
          return "<?xml version='1.0' standalone='no'?><svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' style='isolation:isolate' viewBox='0 0 200 200' width='200' height='200'><defs><clipPath id='_clipPath_BTzJAWdHJZVUGGYrrUDwSyNPa5Ujloqh'><rect width='200' height='200'/></clipPath></defs><g clip-path='url(#_clipPath_BTzJAWdHJZVUGGYrrUDwSyNPa5Ujloqh)'><g><rect x='41.4' y='40.189' width='117.199' height='120.236' transform='matrix(0.951057,-0.309017,0.309017,0.951057,-26.102184,35.811068)' fill='rgb(28,27,27)'/><rect x='41.4' y='38.233' width='117.199' height='120.236' transform='matrix(0.961262,-0.275637,0.275637,0.961262,-23.235267,31.373671)' fill='rgb(57,57,57)'/><rect x='41.4' y='38.233' width='117.199' height='120.236' transform='matrix(0.978148,-0.207912,0.207912,0.978148,-18.262998,22.940365)' fill='rgb(81,80,80)'/><rect x='41.4' y='36.276' width='117.199' height='120.236' transform='matrix(0.984808,-0.173648,0.173648,0.984808,-15.219469,18.829264)' fill='rgb(149,149,149)'/><rect x='41.4' y='34.32' width='117.199' height='120.236' transform='matrix(0.990268,-0.139173,0.139173,0.990268,-12.170036,14.836374)' fill='rgb(208,208,208)'/><rect x='41.4' y='32.364' width='117.199' height='120.236' transform='matrix(0.994522,-0.104528,0.104528,0.994522,-9.11916,10.959471)' fill='rgb(255,255,255)'/></g><rect x='36.838' y='32.603' width='117.199' height='32.94' transform='matrix(0.994522,-0.104528,0.104528,0.994522,-4.606717,10.24477)' fill='rgb(255,63,56)'/><g transform='matrix(0.994522,-0.104528,0.104528,0.994522,35.499851,38.859638)'><text transform='matrix(1,0,0,1,32.049347,25.853783)' style='font-family:Open Sans, sans-serif;font-weight:400;font-size:24px;font-style:normal;word-spacing:5;fill:#ffffff;stroke:none;'>" + month + "</text></g><g transform='matrix(0.994522,-0.104528,0.104528,0.994522,39.028839,71.380565)'><text transform='matrix(1,0,0,1,17.498417,70.832115)' style='font-family:Open Sans, sans-serif;font-weight:400;font-size:70px;font-style:normal;fill:#000000;stroke:none;'>" + day + "</text></g></g></svg>";
        }
        document.write(setSvg('DEC', '22'));
</script>

Jedoch wenn ich es in meiner Seite einbette gibt er mit nur noch weiss (res. einfach eine Page ohne Quelltext) zurück? Wie kann ich dies beheben?

BSP http://jsfiddle.net/svenwas3f/oxb8z0eg/2/

Computer, Internet, Programm, HTML, IT, Programmieren, JS, Informatik, JavaScript-Code, SVG
1 Antwort
JavaScript Tabs mit OnClick / Mit Enter Taste bestätigen?

Hallo alle miteinander,

Ich habe vor kurzem eine ähnliche Frage gestellt, der Code hast sich aber nun komplett geändert. Dies ist die letzte "Hürde" die ich noch überwinden muss um endlich mit meinen eigentlichem Projekt weitermachen zu können.

Ich kenne mich mit JavaScript noch nicht wirklich gut aus, außer die Tabs und ein Accordeon habe ich noch nie etwas mit JavaScipt realisiert. Und da ich die Code-Funktionsweise sehr übersichtlich finde, möchte ich diese nicht wieder unnötig zerstören..

Also die eigentlichen Tabs funktionieren schon, können aber nicht mit der Enter Taste bestätigt & aufgerufen werden.

function clickHandler & function keyHandler == nicht I.O.

Ich weiß nicht wie ich diese in ein Onclick Ereignis einfügen kann, geht das überhaupt?

Wobei die Funktion clickHandler eigentlich überflüssig ist, wichtiger ist die Funktion keyHandler.

JS

function init() {
	function openTab(evt, tabName) {
		// Declare all variables.
		var i, tabpane, tablink;

		// Get all elements with class="tab-pane" and hide them.
		tabpane = document.getElementsByClassName("tab-pane");
		for (i = 0; i < tabpane.length; i++) {
		    tabpane[i].style.display = "none";
		}

		// Get all elements with class="tablink" and remove the class "active".
		tablink = document.getElementsByClassName("tablink");
		for (i = 0; i < tablink.length; i++) {
	 	   tablink[i].className = tablink[i].className.replace(" active", "");
		}

		// Show the current tab, and add an "active" class to the button that opened the tab.
		document.getElementById(tabName).style.display = "block";
		evt.currentTarget.className += " active";
	}

	var tablink = document.getElementsByClassName("tablink")[0];
	if (typeof tablink !== 'undefined') {
 	    tablink.click();
	}

	var tab = document.getElementsByClassName('tabpanel'); 
	tab.addEventListener('click', clickHandler);
	tab.addEventListener('keypress', keyHandler);

	function clickHandler(evt) {
		openTab(evt);
	}

	function keyHandler(evt) {
		// Ermittelt den Keycode der gedrückten Taste.
		let keyCode = (evt.keyCode ? evt.keyCode : evt.which);
		// Überprüft ob die Taste "Enter" gedrückt wurde.
		if (keyCode === 13) {
			openTab(document.activeElement);
		}
	}
}
document.addEventListener("DOMContentLoaded", function () {
	init();
});

HTML

<div class="tabpanel">

<!-- Tab Navigation -->
<ul class="tab-nav">
	<li><a tabindex="0" class="tablink" onclick="openTab(event, 'tab-pane-1')">HIER1</a></li>
	<li><a tabindex="0" class="tablink" onclick="openTab(event, 'tab-pane-2')">HIER2</a></li> </ul>

<!-- Tab Content -->
<div class="tab-content">
<div class="tab-pane" id="tab-pane-1">HIER1</div>
<div class="tab-pane" id="tab-pane-2">HIER2</div>
</div>

</div>
JavaScript, JavaScript-Code
1 Antwort
JavaScript Tabreiter mit OnClick / Letzte Funktion Fehlerhaft?

Hallo alle miteinander,

Ich habe vor kurzem die verschiedensten JS Tabs realisiert und getestet. Letztendlich habe ich mich dann für die "OnClick" Tabs entschieden. Das ganze funktionierte bis jetzt eigentlich auch so wie gewollt, allerdings fielen mir gestern 2 unschöne Dinge auf, die ich bis jetzt übersehen habe.

--------------------------------------------------------------------------------------------------------------------------------------

PROBLEM-1:

Ich habe die nötige JS Datei für das HTML-Tab auf alle meinen Beiträgen eingebunden, wenn aber das eigentliche HTML Tab nicht im Beitrag vorkommt, wird ein Fehler erzeugt.

Uncaught TypeError: Cannot read property 'click' of undefined

erzeugt wird dieser durch die letzte Zeile im JS-Code.

--------------------------------------------------------------------------------------------------------------------------------------

PROBLEM-2:

Die Tabs können nicht mit der Tab-Taste angesteuert werden, das ist mir aber schon sehr wichtig. Man kann also nicht mit der Tab-Taste zwischen den Tabs wechseln.

<a class="tablink" onclick="openTab(event, 'tab-pane-1')">HIER1</a>

ändern kann man das mittels href="javascript:void(0)"

Gibt es hierfür eine bessere Möglichkeit, z.B. mittel einer JS Funktion?

--------------------------------------------------------------------------------------------------------------------------------------

Das nötige JS für die Tabs:

function openTab(evt, tabName) {
	// Declare all variables.
	var i, tabpane, tablink;

    // Get all elements with class="tab-pane" and hide them.
    tabpane = document.getElementsByClassName("tab-pane");
    for (i = 0; i &lt; tabpane.length; i++) {
        tabpane[i].style.display = "none";
    }

    // Get all elements with class="tablink" and remove the class "active".
    tablink = document.getElementsByClassName("tablink");
    for (i = 0; i &lt; tablink.length; i++) {
        tablink[i].className = tablink[i].className.replace(" active", "");
    }

    // Show the current tab, and add an "active" class to the button that opened the tab.
    document.getElementById(tabName).style.display = "block";
    evt.currentTarget.className += " active";

}

// Get the first element with class="tablink" and click on it.
document.getElementsByClassName("tablink")[0].click();

Das nötige HTML für die Tabs:

<!-- Tabpanel / Tabs -->
<div class="tabpanel">

<!-- Tab Navigation -->
<ul class="tab-nav">
<li><a class="tablink" onclick="openTab(event, 'tab-pane-1')">HIER1</a></li> <li><a class="tablink" onclick="openTab(event, 'tab-pane-2')">HIER2</a></li> <li><a class="tablink" onclick="openTab(event, 'tab-pane-3')">HIER3</a></li> <li><a class="tablink" onclick="openTab(event, 'tab-pane-4')">HIER4</a></li> </ul>

<!-- Tab Content -->
<div class="tab-content">
<div class="tab-pane" id="tab-pane-1">HIER1</div>
<div class="tab-pane" id="tab-pane-2">HIER2</div>
<div class="tab-pane" id="tab-pane-3">HIER3</div>
<div class="tab-pane" id="tab-pane-4">HIER4</div>
</div>

</div>
Computer, JavaScript, JavaScript-Code
1 Antwort
Hilft mir jemand bei der Fehlersuche in 'Snake'?

Ich habe jetzt einmal wieder ein Snake-Spiel angefangen zu programmieren. Diesmal soll es Snake-Online für mehrere Spieler werden, was der Grund dafür ist, dass ich meine alte Version noch einmal uberarbeiten musste, dass man leichter mehrere Schlangen erstellen kann und auch das ganze Spiel besser gemanagt wird.

In den Source Code könnt ihr euch auf http://christian-plugge.de/Snake-Prototyp reinlesen. Um Die Vorschau zu sehen einfach noch -Vorschau an die URL anhängen, also http://christian-plugge.de/Snake-Prototyp-Vorschau.

Das Problem ist in Zeile 98 bzw. 413 - 417:

console.log(this.game.getPixelRGBA(nextX, this.lastPos.y));

Definition:

// get pixel data of x/y
game.prototype.getPixelRGBA = function(x, y) {
	x = x || 0;
	y = y || 0;
	return this.ctx.getImageData(x, y, 1, 1).data;
};

Das soll die RGBA (Red/Green/Blue/Alpha)-Farbe von einem Pixel im Canvas auslesen. An der Stelle im Code testweise nur wenn die Schlange nach links läuft. Wenn man aber den Log in der Konsole anguckt und über eine andere Schlange läuft, wird als Farbe immer noch nur

Uint8ClampedArray(4) [0, 0, 0, 0]

also keine Farbe ausgegeben. Eine neue Schlange kann man mit der Klasse snake erstellen:

new snake({
	game: g,
	name: 'test',
	control: {
		up: 'w',
		left: 'a',
		down: 's',
		right: 'd'
	}
});

Ich vermute, dass die Farbe ausgelesen wird, bevor das Spielfeld (die Spieler) überhaupt gezeichnet wurden. Irgendwelche Vorschläge??

Gezeichnet wird das Feld übrigens mit der Funktion in Zeile 394 - 400:

// print next frame
game.prototype.nextFrame = function() {
	this.clear();
	this.player.forEach(
		snake => snake.paint(),
		snake => snake.move()
	);
};

Danke für jede Hilfe

Liebe Grüße

Win7User

Computer, JavaScript, JS, Spieleprogrammierung, JavaScript-Code, Spiele und Gaming
2 Antworten
Bester Javasript Tabreiter? / Javasript Aria-Tabs (Funktion: Entertaste)?

Hallo alle zusammen, ich brauche zu zwei Fragen kurz mal eure Hilfe und Meinung.

  1. In meinen Beiträgen Ich will nun komplett auf Shortcodes verzichten, deshalb muss ich mir nun einen eigenen Tabreiter mit JavaScript programmieren. Und mir ist aufgefallen das es wirklich sehr viel unterschiedliche Ansätze dafür gibt. Welche JavaScript-Tabs sind eurer Meinung nach am besten?
  2. Ich habe mir einen Tabreiter erstellt. Dieser benutzt die Aria-Attribute um zwischen den Tabs hin und her zu wechseln. Dies funktioniert auch, nun benötige ich aber in JavaScript noch eine Funktion für die Enter Taster. Er erkennt bereites die TAB-Taste, bei Drücken der Enter Taste wird aber nicht zu dem jeweiligen Tab gewechselt.

Beispiel: (https://wiki.selfhtml.org/wiki/JavaScript/Tutorials/zug%C3%A4ngliche_Registerkarten)

Der Code ist fast fertig, es fehlt lediglich der Inhalt der Funktion Keyhandler

HTML:

  <div id="tabpanel">
    <ul role="tablist" id="tablist">
      <li id="link1" role="tab" aria-controls="panel-1" aria-selected="true" tabindex="0">1 - Button</li>
      <li id="link2" role="tab" aria-controls="panel-2" aria-selected="false" tabindex="0">2 - Button</li>
      <li id="link3" role="tab" aria-controls="panel-3" aria-selected="false" tabindex="0">3 - Button</li>
    </ul>
    
    <div id="tabcontent">
      <div id="panel-1" role="tabpanel" aria-labelledby="link1" aria-hidden="false">
        <h3>Inhalt 1</h3>
        <p> Hier kommt was hin!</p>
      </div>
      <div id="panel-2" role="tabpanel" aria-labelledby="link2" aria-hidden="true">
        <h3>Inhalt 1</h3>
        <p> Hier kommt was hin!</p>
      </div>
      <div id="panel-3" role="tabpanel" aria-labelledby="link3" aria-hidden="true">
        <h3>Inhalt 1</h3>
        <p> Hier kommt was hin!</p>
      </div>
    </div>
  </div>
  <div id="tabcontent">
    <div id="panel-1" role="tabpanel" aria-labelledby="link1" aria-hidden="false">
      <h3>Inhalt 1</h3>
      <p> Hier kommt was hin!</p>
    </div>
    <div id="panel-2" role="tabpanel" aria-labelledby="link2" aria-hidden="true">
      <h3>Inhalt 1</h3>
      <p> Hier kommt was hin!</p>
    </div>
    <div id="panel-3" role="tabpanel" aria-labelledby="link3" aria-hidden="true">
      <h3>Inhalt 1</h3>
      <p> Hier kommt was hin!</p>
    </div>
  </div>
</div>

JavaScript:

function init() {
  var tab = document.getElementById('tabpanel');
  tab.addEventListener('click', clickHandler);
  tab.addEventListener('keypress', keyHandler);
}

function keyHandler(elem) {
  /* Hier fehlt die Funktion der Enter Taste */
}

function clickHandler(elem) {
  var target = elem.target;
  var selectedTab = document.querySelector('[aria-selected="true"]');
  selectedTab.setAttribute('aria-selected', false);
  target.setAttribute('aria-selected', true);

  var panels = document.querySelector('[aria-hidden="false"]');
  panels.setAttribute('aria-hidden', true);

  var panelId = target.getAttribute('aria-controls'),
      panel = document.getElementById(panelId);
  panel.setAttribute('aria-hidden', false);
}
Computer, Technik, JavaScript, Technologie, JavaScript-Code, Spiele und Gaming
2 Antworten
Javascript Slider funktioniert nicht richtig?

Hallo Leute,

habe heute mit Javascript angefangen und will einen Slider machen, bei dem man auf einen button klickt und sich dann rechts text und links ein Foto ändert. Das Foto wird hier als Background Image eingefügt und der Textbereich besteht aus drei Teilen (Text, Autor und Position). Ich weiß, dass dieser Code viel zu kompliziert ist, aber so ist das eben als Anfänger ^^ Wenn ihr wisst, woran es liegt und wie man es verkürzen kann freue ich mich über eure Antwort.

Vielen Dank!

Hier mein Code:

//Testimonial Slider

function testimonialSlider() {

 //[0] = Slide 1

 //[1] = Slide 2

 //[2] = Slide 3

 //[3] = Slide 4

 //[4] = Slide 5

 var img = ['url("Slide1") no-repeat center center', 'url("Slide 2") no-repeat center center', 'url("Slide 3") no-repeat center center', 'url("Slide 4") no-repeat center center', 'url("Slide 5") no-repeat center center', ];

 var text = ['Text Slide 1', 'Text Slide 2', 'Text Slide 3', 'Text Slide 4.', 'Text Slide 5', ];

 var author = ['Author Slide 1', 'Author Slide 2', 'Author Slide 3', 'Author Slide 4', 'Author Slide 5', ];

 var pos = ['Position Slide 1', 'Position Slide 2.', 'Position Slide 3', 'Postition Slide 4', 'Position Slide 5', ];

 var tIMG = document.getElementById('t_img');

 var tTEXT = document.getElementById('t_testimonial');

 var tNAME = document.getElementById('t_name');

 var tPOS = document.getElementById('t_position');

 var next = document.getElementById('next_button');

 var prev = document.getElementById('prev_button');

 var i = 0;

 next.addEventListener('click', function () {

  tIMG.style.background = img[i];

  tIMG.style.backgroundSize = 'cover';

  tTEXT.innerHTML = text[i];

  tNAME.innerHTML = author[i];

  tPOS.innerHTML = pos[i];

  if (i = 4) {

   i = 0;

  } else {

   i++;

  }

 });

 prev.addEventListener('click', function () {

  tIMG.style.background = img[i];

  tIMG.style.backgroundSize = 'cover';

  tTEXT.innerHTML = text[i];

  tNAME.innerHTML = author[i];

  tPOS.innerHTML = pos[i];

  if (i = 0) {

   i = 4;

  } else {

   i--;

  }

 });

}

Programmieren, JavaScript, Programmierung, JavaScript-Code, slider
3 Antworten
Habe ich einen Fehler in meinem Node.js code?

Guten Abend Leute,

Ich habe hier einmal eine kleine Frage. Ich schreibe gerade an einem Programm, dass das herunterladen von großen Dateien erleichtert.

Jetzt habe ich aber fast schon ein lächerliches Problem:

Wenn der Benutzer die Daten in der Python-GUI eingegeben hat, werden sie in eine JSON-Datei geschrieben. Diese Datei soll jetzt von dem Node.js Skript ausgewertet werden und alles, was geändert wurde von den Standardwerten ersetzen.

Hier habe ich die Standardwerte einfach in das global-Objekt geschrieben, dass ich von überall darauf zugreifen kann und es auch gut ändern.

//Standardwerte setzen
global.url	= http://speed.hetzner.de/1GB.bin';
global.name	= 'result.bin';
global.maxSize	= 1048576;
global.start 	= 0;
global.size 	= 0;
global.part 	= 1;

//Zwischenspeicher für Optionen (sollen Standardwerte überschreiben)

var opts = "";

//Optionen auslesen fs.createReadStream('opts.json') .on('data', chunk => opts += chunk) .on('end', () => { //und in ein JS-Objekt umwandeln opts = JSON.parse(opts); //Hier soll der Standardwert überschrieben werden, falls ein Wert angegeben ist for(name in opts) if (opts[name] !== '') global[name] = opts[name]; });

/* Beispielwert von opts { url: 'google.de', name: 'Google', size: '', start: '', part: '' } */

Ich habe jetzt einmal versucht, in der GUI als URL google.de und als Name Google anzugeben. Die URL wurde überschrieben, der Name allerdings nicht, obwohl er auch angegeben war. Habe ich noch einen Fehler im Skript oder was habe ich falsch gemacht?

Ich kann einfach nichts finden. Wo ich die Sachen auch logge, ich kann den Fehler nicht finden :c

Danke für jede Hilfe!

Liebe Grüße
Win7User

Computer, Technik, JavaScript, Fehlerbehebung, Python, Technologie, JavaScript-Code, node.js, Spiele und Gaming
2 Antworten

Meistgelesene Fragen zum Thema JavaScript-Code