ondragstart dynamisch zuweisen
-
ich hab eine function in der ein <img> erzeugt wird.
var image = document.createElement("img"); image.id = "drag" + AppArray.length; image.src = pic.Logo; image.draggable = true;
Soweit funktioniert das und mein <img> tag sieht dann so aus:
<img id="drag7" src="pic.logo" draggable="true" .... usw
wenn ich aber
image.ondragstart = "drag(ev)"
schreibe, dann steht diese option nicht im <img> tag drinnen
Wie genau lautet der Code um ein Event hinzuzufügen?image.addEventListener('ondragstart', function (ev) { ev.dataTransfer.setData("Text", ev.target.id); });
Erzeugt zwar keine Fehler, allerings auch keine Option im <img> Tag
von jQuery hab ich keine Ahnung, aber so wie ich das verstanden habe wohl die beste Lösung. Hat jemand vielleicht ein funktionierendes Beispiel dafür?
-
var image = "<img style='width: 100px; height: 100px;' title='" + pic.Name + "' alt='" + pic.URL + "' draggable='true' ondragstart='drag(event)' src='" + pic.Logo + "' id=drag'" + AppArray.length + ">"; document.getElementById('ai_logo').innerHTML = image;
Hat mir das Problem gelöst. Alles funktioniert so wie es soll. In jedem Browser.
-
Du solltest bei einem callback auch eine Funktion angeben und keinen string.
-
Shade Of Mine schrieb:
Du solltest bei einem callback auch eine Funktion angeben und keinen string.
Verstehe ich nicht ganz, es funktioniert doch jetzt...
Wie gesagt, alle Möglichkeiten wie z.B.image.ondragstart = "drag(event"; oder image.ondragstart = drag(event); oder auch image.addEventListener('ondragstart', function (ev) { ev.dataTransfer.setData("Text", ev.target.id); });
Haben alle nicht das ondragstart event in das <img> Tag geschrieben.
-
Damit hängst du auch ein callback an ein Event und änderst nicht den HTML Code.
Es ist nicht notwendig dass die Event handler im HTML aufscheinen. Die meisten Leute würden sogar soweit gehen zu sagen, dass der Event handler im HTML nie aufscheinen darf.