1

这两个数学问题不应该给出相同的答案吗?括号/括号先完成,对吗?所以它应该把它们全部加起来,然后除以 2,然后减去 10。下面的第二个答案是一个给我我需要的正确值的答案,另一个给我一个很长的路要走的值。

    var pleft = $(this).offset().left + ($(this).width() /2) - ($("#question-wrapper").width() / 2) - 10;

    var pleft = (($(this).offset().left + $(this).width() + $("#question-wrapper").width()) / 2) - 10;
4

3 回答 3

5
var x = $(this).offset().left;
var y = $(this).width();
var z = $("#question-wrapper");

var pleft = x + (y/2) - (z/2) - 10

var pleft = ((x + y + z) / 2) - 10

希望这有助于消除差异。

于 2010-10-19T08:46:21.457 回答
2

我已经分解了公式,所以你可以看到:

var pleft = $(this).offset().left <------------------- not divided
+ ($(this).width() /2) 
- ($("#question-wrapper").width() / 2) 
- 10;


var pleft = (
(
    $(this).offset().left  <--------------------- divided
    + $(this).width() 
    + $("#question-wrapper").width()
)
/ 2)
- 10;

在第一种情况下, $(this).offset().left 不被 2 除,而在第二种情况下,这就是为什么它们没有给出相同的结果

于 2010-10-19T08:46:40.360 回答
0

首先,您永远不会将第一部分除以 2。这就是它关闭的原因。

var pleft = ($(this).offset().left / 2) + ($(this).width() /2) - ($("#question-wrapper").width() / 2) - 10;

括号/括号先完成,对吗?

是的,但是在您的示例中它们并不完全等效。


你的代码做了什么:

  1. a + b/2 - c/2,然后减去 10
  2. (a + b - c) / 2,然后减去 10
于 2010-10-19T08:45:30.790 回答