Изменить функцию через условие
Есть счётчик кликов по элементам. Первый клик он записывает в переменную : sfId_Start , второй в sfId_Target . Потом эти данные передаются в переменные part1 и part2, дальше эти данные приводятся к строке и складываються в переменной sumspart (). Проблема в том чтоб корктно передать эти данные в переменную path и перезапустить функцию drawPath(path);
вот код : function drawPath(path) { setTimeout(function loop() { var current = path.shift(); var point = document.querySelector('.c'+current[1]+current[0]) point.classList.add('path') if (path.length) setTimeout(loop, 100); }, 500); } window.onload = function () { // add eventListener for tizenhwkey document.addEventListener('tizenhwkey', function(e) { if(e.keyName == "back") tizen.application.getCurrentApplication().exit(); }); var matrix = [ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]; // console.log( matrix [ ( 3)] [ (4)]) var grid = new PF.Grid(10, 10, matrix); var finder = new PF.BiDijkstraFinder(); var path = finder.findPath(0, 3, 9, 9, grid); console.log(path); drawPath(path); var part1 var part2 var sumPart var informererd = 0 String(part1, part2, sumPart) $('td').click( function sumspart () { if (part1 > "" && part2 > "" ) {sumPart = part1+ ',' + ' ' + part2 + ',' + ' ' + "grid" ;console.log(sumPart); } if (sumPart > "" ) { sumPart === sumPart ; if ( sumPart === sumPart) { path = finder.findPath(sumPart); }; drawPath(path); } } ) $(function () { var informer = false, sfId_Start, sfId_Target; $('td').click(handleClick); function handleClick() { informer = !informer; if (informer) { sfId_Start = $(this).attr('id'); part1 = sfId_Start sfId_Target = null; } else { sfId_Target = $(this).attr('id'); part2 = sfId_Target sfId_Start = null; } console.log(informer, sfId_Start, sfId_Target); } }); |
То есть система такая : один клик взяли значение второй клик взяли второе значение сложыли эти 2 значения вместе и передали их вот сюда:
path = finder.findPath(0, 3, 9, 9, grid); и перезапустили функцию : drawPath(path); (это нужно делать при 2 клике) Подскажите как это правильно реализовать? Вот весь код : http://jsfiddle.net/48u3mx4w/13/ |
Валерий1996,
алгоритм --- клик по клетке - переменная пуста (ничего не делаем) занесли данные в переменную - клик по клетке - сравниваем данные переменной и клетки - одинаковые (ничего не делаем) -- иначе передаём данные переменной и клетки , затем обнуляем переменную. |
Валерий1996,
примерно так $(function() { var a; $("td").click(function() { var b = $(this).attr("id"); a ? a != b && (path = finder.findPath(a, b, grid), drawPath(path), a = null) : a = b }) }); |
Цитата:
Возможно нужно как то привести к числу данные переменных : a и b(там хранятся значения типа 0, 3, 9, 9 ) Но это скорее всего строка и может из-за этого код работать не хочет. Может есть способ както его на выходе превести к числу ? я пробовал persfolatom но не получилось( |
Или число это нужно привести к числу и распарсить на 4 отдельных числа как в примере ? Если да, то подскажите как это сделать ?
|
Валерий1996,
где функция findPath? |
Валерий1996,
$(function() { var a; $("td").click(function() { var b = $(this).attr("id"); a ? a != b && (a=a.split(/\s+/),b=b.split(/\s+/),path = finder.findPath(a[0],a[1],b[0],b[1], grid), drawPath(path), a = null) : a = b }) }); |
Часовой пояс GMT +3, время: 22:43. |