2011-10-08 340 views
0

我可能有一個很簡單的問題。我使用JavaScript生成一些圖像。當我點擊這樣的圖像並移動光標時,圖像應該跟隨,直到我再次點擊。 這是我的解決方案:onmousemove使用2個參數

我創建了IMG並將其與 「點擊」 事件處理程序連接:

img.onclick = prepare_pic_move(img); 

這種處理程序的開始 「的OnMouseMove」 處理程序:

function prepare_pic_move(img) { 
img.onmousemove = pic_move(ev, img); 
    } 

該功能應該最終移動圖片:

function pic_move(ev, img) { 
    img.style.left = ev.ClientX; 
    img.style.top = ev.ClientY; 
    } 

它沒有工作和Firefox的錯誤控制檯說,ev沒有定義。 我認爲問題是我必須在pic_move函數中使用兩個參數。

回答

1

您沒有通過ev運作prepare_pic_move,試試這個辦法

img.onclick = function (ev) { prepare_pic_move(ev, img); }; 

附:我不認爲你需要傳遞img作爲參數,並且ClientX沒有跨瀏覽器。

img.onclick = function (ev) { 
    img.style.left = ev.ClientX; 
    img.style.top = ev.ClientY; 
}; 
1

您不需要傳入參數img,因爲您可以通過ev.srcElement獲取它。所以你的兩個方法只需要一個參數。事實上,你在第一個方法中命名爲img的參數實際上是你的ev,如果你使用img.onclick = prepare_pic_move來連接你的onclick事件;然後它將與您需要的ev對象作爲第一個參數(您可以從img重命名爲ev)調用

0

prepare_pic_move應該返回一個事件處理程序。它目前正在返回undefined

function prepare_pic_move(img) { 
    return function(evt){ 
     img.onmousemove = pic_move(ev, img); 
    }; 
}