2015-07-05 55 views
0

所以我正在做一個拖放的東西。當用戶抓取元素時,我需要爲dragenter添加一個事件偵聽器給每個元素。在那個監聽器函數中,當鼠標移過那個元素時,我需要它來獲取並保存clientX。我遇到的問題是它獲取第一個元素的鼠標位置,並保持每個其他元素相同的一個。我怎樣才能解決這個問題?爲每個獲取客戶端X的元素添加一個函數

代碼:

if(editor_children[i].nodeType != 3) 
    { 
     editor_children[i].addEventListener("dragenter", function(event){ 
      if(event.target.id !== e.target.id) event.target.className= event.target.className + " highlight"; 
      position= event.clientX; 
      last_over= event.target.id; 
      console.log("Mouse: " + e.clientX + " Position: " + position + " Last Element: " + last_over); 
     }) 

     editor_children[i].addEventListener("dragleave", function(event){ 
      event.target.className= event.target.className.replace(' highlight', ''); 
     }); 
    } 

請沒有JS庫。

+0

乍一看,可能是因爲您使用相同的變量(位置變量)來存儲每個元素的每個位置? 你對自己也很難做到。只要做功能(e){e = e ||事件;並使用e的一切。 – tomysshadow

+0

位置變量是一個全局(是的,我知道,錯誤的編碼,稍後會修復)拖放功能需要..但我發現了問題,謝謝。 – Zaper127

回答

0

這就是爲什麼我不是JavaScript的巨大粉絲。無論如何,這個問題是由我在一個循環內創建一個函數引起的,所以它每次都使用相同的值,而不是一個變量值。我剛剛通過運行JShint瞭解到了這一點。此外,我必須清除拖放調用之間的函數,以避免存儲數據出現問題。這很難解釋,但我明白了。

相關問題