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.


  • Mod

    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.


  • Mod

    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.


Anmelden zum Antworten