0
1st post - go easy。Javascript動態創建帶有事件和這個參數的eventListener
我想在JavaScript中創建事件監聽具有作爲 同樣的效果下ondrop功能:
<tr
id=rw01
draggable=true
ondragstart=drag(event);
ondrop=drop(event,this);
>some HTML</tr>
的JavaScript看起來像這樣:
function drag(ev) {
ev.dataTransfer.setData('id', ev.target.id);
}
function drop(ev,r) {
ev.preventDefault();
var oldRowID = ev.dataTransfer.getData('id');
var newRowNo = r.rowIndex;
var tbl = document.getElementById('main');
newRow = tbl.insertRow(newRowNo);
oldRow = document.getElementById(oldRowID);
newRow.innerHTML = oldRow.innerHTML;
newRow.id = oldRowID;
newRow.draggable = true;
newRow.addEventListener('dragstart',drag(event));
newRow.addEventListener('drop', function() {
drop(event,newRow);
});
oldRowNo = oldRow.rowIndex;
tbl.deleteRow(oldRowNo);
}
我得到的錯誤是在新創建的行上通過ondrop事件調用drop函數的時候。該行
var oldRowID = ev.dataTransfer.getData('id')
什麼也沒有返回 - 表明拖動事件沒有將元素id傳遞給放置函數。
從html調用的所有函數都正常工作 - 新創建的事件處理程序調用的相同函數不起作用。
在此先感謝。
謝謝@ShwethaU我讓聽衆在插入的行上工作。但是我無法弄清楚如何獲取已拖動對象的元素的id。 drop()函數觸發,但該函數需要接收的id。簡而言之,哪些元素在標記中觸發了drop函數,我傳遞了'this'來獲取該信息。據我所知,'function drop(ev){'現在不需要ev了。 – Gaz
更新。所有固定的感謝堆。我使用了'event.target.parentElement.id',儘管'parentElement'只是必要的,因爲我在
相關問題