Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.08.2015, 18:04
Аспирант
Отправить личное сообщение для Валерий1996 Посмотреть профиль Найти все сообщения от Валерий1996
 
Регистрация: 11.06.2015
Сообщений: 74

Изменить функцию через условие
Есть счётчик кликов по элементам. Первый клик он записывает в переменную : 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 (permalink)  
Старый 20.08.2015, 18:08
Аспирант
Отправить личное сообщение для Валерий1996 Посмотреть профиль Найти все сообщения от Валерий1996
 
Регистрация: 11.06.2015
Сообщений: 74

То есть система такая : один клик взяли значение второй клик взяли второе значение сложыли эти 2 значения вместе и передали их вот сюда:
path = finder.findPath(0, 3, 9, 9, grid);
и перезапустили функцию : drawPath(path); (это нужно делать при 2 клике)
Подскажите как это правильно реализовать?
Вот весь код : http://jsfiddle.net/48u3mx4w/13/

Последний раз редактировалось Валерий1996, 20.08.2015 в 18:13.
Ответить с цитированием
  #3 (permalink)  
Старый 20.08.2015, 18:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Валерий1996,
алгоритм --- клик по клетке - переменная пуста (ничего не делаем) занесли данные в переменную - клик по клетке - сравниваем данные переменной и клетки - одинаковые (ничего не делаем) -- иначе передаём данные переменной и клетки , затем обнуляем переменную.
Ответить с цитированием
  #4 (permalink)  
Старый 20.08.2015, 19:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Валерий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
    })
});
Ответить с цитированием
  #5 (permalink)  
Старый 21.08.2015, 11:30
Аспирант
Отправить личное сообщение для Валерий1996 Посмотреть профиль Найти все сообщения от Валерий1996
 
Регистрация: 11.06.2015
Сообщений: 74

Сообщение от рони Посмотреть сообщение
Валерий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
    })
});
Я сделал такую конструкцию как Вы мне посоветовали, но ошибка возникает на этапе передачи данных в path = finder.findPath(a, b, grid)
Возможно нужно как то привести к числу данные переменных : a и b(там хранятся значения типа 0, 3, 9, 9 ) Но это скорее всего строка и может из-за этого код работать не хочет. Может есть способ както его на выходе превести к числу ? я пробовал persfolatom но не получилось(
Ответить с цитированием
  #6 (permalink)  
Старый 21.08.2015, 11:32
Аспирант
Отправить личное сообщение для Валерий1996 Посмотреть профиль Найти все сообщения от Валерий1996
 
Регистрация: 11.06.2015
Сообщений: 74

Или число это нужно привести к числу и распарсить на 4 отдельных числа как в примере ? Если да, то подскажите как это сделать ?
Ответить с цитированием
  #7 (permalink)  
Старый 21.08.2015, 11:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Валерий1996,
где функция findPath?
Ответить с цитированием
  #8 (permalink)  
Старый 21.08.2015, 11:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Валерий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
    })
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить скрипт, чтобы текст вышел на месте кнопки, а не через модальное окно. hornikot Общие вопросы Javascript 1 09.05.2014 22:00
Google Chart - не получается построить график из данных приходящих через json FRIE Общие вопросы Javascript 7 18.04.2014 19:07
Асинхронная отправка файла через jQuery InviS jQuery 3 23.04.2013 22:27
Через ajax отправить много данных из таблицы на сервер Heger jQuery 3 29.08.2012 18:51
XMLHTTPRequest передача имя через POST dds AJAX и COMET 0 14.08.2008 14:44