Information Technology Reference
In-Depth Information
Callback-Funktion verwenden wir dann aber nicht return false , sondern evt
.preventDefault() - die Wirkung ist die gleiche, das drop -Event wird ausgelöst.
Damit sind wir bei der letzten Aufgabe der Checkliste angelangt, dem Extrahie-
ren der Daten und Umsetzen der Spiellogik beim ondrop -Event. Der Callback-
Funktion drop() übergeben wir wieder das DragEvent im Argument event und
greifen dann mit getData() auf die bei dragstart gespeicherte ID zu.
var drop = function(evt) {
var id = evt.dataTransfer.getData('text');
var elemQ = questions.namedItem(id);
var elemA = evt.target;
elemA.setAttribute("data-id",id);
elemA.setAttribute("data-bev",elemQ.dataset.bev);
elemA.innerHTML = elemQ.innerHTML;
// weiter in der Spiellogik
};
Mithilfe der ID können wir über questions.namedItem(id) direkt auf das Quell-
objekt zugreifen, dessen Einwohnerzahl als data -Attribut im Zielobjekt zwi-
schenspeichern und seinen Städtenamen als Beschriftung verwenden. Die
beiden Variablen elemQ und elemA sind Shortcuts für die beiden beteiligten
li -Elemente. Wir erinnern uns, dass Remy Sharps JavaScript- shim für data -
Attribute leider nur lesend funktioniert, weshalb wir anstelle des eleganteren
elemA.dataset.id=id das bestens bekannte elamA.setAttribute("data-id",id)
zum Speichern der Werte verwenden.
Als Teil der Spiellogik werden an dieser Stelle auch die beiden betroffenen
Schaltflächen deaktiviert, und es wird visuelles Feedback gegeben - beides
über CSS-Klassen, die mit classList.add() bequem hinzugefügt werden kön-
nen. Die zusätzlichen Einträge in der Funktion drop() sind:
elemQ.classList.add('qInactive');
elemA.classList.add('aInactive');
Die entsprechenden Formate im CSS-Stylesheet lauten:
.qInactive {
pointer-events: none;
color: #AAA;
background-color: #EEE;
border-color: #AAA;
}
.aInactive {
Search WWH ::




Custom Search