2016-01-21 3 views
-1

Итак, для тех, кто посмотрел my previous question, им удалось создать шахматную доску в полном JS и jQuery (или, по большей части, по крайней мере).Используйте var из mousedown() в событии mouseup()

Так что для моих предметов, чтобы эффективно быть ограничено в количестве квадратов, им разрешено двигаться, мне нужно знать их положение. (Начальная и конечная позиция)

я написал ниже код для входа в исходную строку (целое число), и начиная столбец (целое число), и сделать это на обоих mousedown() и mouseup()

var piece; 
     $('div').mousedown(function(e) { 
      e.preventDefault(); 
      var selectedRow = this.getAttribute("data-row"); 
      var selectedColumn = this.getAttribute("data-column"); 
      console.log(selectedRow, selectedColumn); 
      piece = $(this).find('.pawn'); 
     }) 
     .mouseup(function() { 
      var selectedRow = this.getAttribute("data-row"); 
      var selectedColumn = this.getAttribute("data-column"); 
      console.log(selectedRow, selectedColumn); 
      if (selectedRow === selectedRow++ || selectedColumn === selectedColumn++){ 
       console.log('TRUE :D'); //Wont be true because both selectedRow's will be the same value 
      } 
      $(this).append(piece); 
     }); 

Для насколько я могу см. я не могу сравнить оба значения, так как оба журнала находятся в разных событиях. (имейте в виду, что я новичок на обоих языках и я все еще изучаю).

Мой вопрос будет, если его можно собрать оба значения (начиная и заканчивая), а затем быть в состоянии сравнить их друг с другом.

+1

Итак, вы говорите, что используете jQuery (и я это вижу), но почему вы не используете его для других вещей. Например, 'this.getAttribute (" data-row ")' может быть '$ (this) .data ('row');'. И да, вы можете сравнить их, вам либо нужно переместить переменные из области событий, либо вернуть их в атрибут 'data'. – putvande

+0

@putvande это аккуратная вещь, чтобы знать, спасибо! Как я уже сказал, я все еще изучаю оба языка. –

+0

@putvande Есть ли причина, по которой целые числа, возвращаемые в консоли, теперь разные цвета? тот, у которого $ (this) .data ('row') является зеленым, а остальные - желтым. Есть ли причина для этого? http://prntscr.com/9suizc –

ответ

2

Самый простой способ - сделать selectedRow_down и selectedColumn_down selectedRow_up и selectedColumn_up в глобальной области.

var selectedRow_down; 
var selectedColumn_down; 
var selectedRow_up; 
var selectedColumn_up; 

$('div').mousedown(function(e) { 
    e.preventDefault(); 
    var selectedRow_down = this.getAttribute("data-row"); 
    var selectedColumn_down = this.getAttribute("data-column"); 
    piece = $(this).find('.pawn'); 
}) 
.mouseup(function() { 
    var selectedRow_up = this.getAttribute("data-row"); 
    var selectedColumn_up = this.getAttribute("data-column"); 
    console.log(selectedRow_up, selectedColumn_up); 
    $(this).append(piece); 
}); 

затем обратитесь к своему значению, как вы делаете ваше событие мыши

также можно сделать глобальный 2 одномерный массив первого так может отслеживать ваши шахматные фигуры, увидеть эту нить, как создавать 2d массивов How can I create a two dimensional array in JavaScript?