2015-09-13 120 views
0

我試圖計算從屏幕寬度的距離,但在我計算的線x它返回null。可能是什麼問題?簡單的jQuery計算不返回值

$.fn.saveClicks = function() { 
 
    $(this).bind('mousedown.clickmap', function(evt) { 
 
     $.post('/clickmap/clickmap.php', { 
 
      sw:window.innerWidth, 
 
      w:evt.pageX, 
 
      x:((sw/2)-w), 
 
      y:evt.pageY, 
 
      l:escape(document.location.pathname) 
 
     }); 
 
    }); 
 
};

+0

嘗試每個值獲得throught'parseInt函數(值);' – koca79331

回答

1

sww沒有變量,它們是聲明作爲$.post函數調用參數的對象的屬性。

// Declare variables first 
var sw = window.innerWidth, 
    w = evt.pageX; 

$.post('/clickmap/clickmap.php', { 
    // Now you can use them in here 
    sw: sw, 
    w: w, 
    x: ((sw/2)-w), 
    y: evt.pageY, 
    l: escape(document.location.pathname) 
}); 

看到它工作here

對象沒有作用域,其屬性與局部變量不同。例如,您可以將對象聲明中訪問變量:

var myVariable = 5; 
var myObject = { foo: myVariable }; 

但其建設過程中,你不能訪問對象的其他屬性:

var myObject = { myVariable: 5, foo: myVariable }; 
// THIS DOES NOT WORK! 
0

你沒有正確調用$.post()功能。第二個參數必須是一個對象,它可以包含多個{property: value}對。

$.post()功能在這裏進行全面介紹: http://api.jquery.com/jquery.post/

所以,你必須首先定義變量,然後調用$。員額函數這些變量爲對象屬性的值傳遞。

看看這個代碼:

$.fn.saveClicks = function() { 
    $(this).bind('mousedown.clickmap', function(evt) { 
     var sw = window.innerWidth; 
     var w = evt.pageX; 
     var y = evt.pageY; 
     var l = escape(document.location.pathname); 
     $.post('/clickmap/clickmap.php', { 
      sw: sw, 
      w: w, 
      x:((sw/2)-w), 
      y: y, 
      l: l 
     }); 
    }); 
}; 

小提琴這裏:https://jsfiddle.net/rqqe0fL4/3/

+0

「我們是誰教別人的魚人代碼 - 只有答案只能爲一天的人提供食物。「 ([源](http://meta.stackexchange.com/a/148274)) –

+0

這意味着爲什麼你不解釋你做了什麼,以便其他人看到這一點,包括OP,可以從中學習,而不僅僅是複製和粘貼! –