Оператор Else не будет срабатывать для исправления узлов в d3.js

У меня есть визуализация d3.js (v5 с использованием промисов), над которой я работаю. Не лучший в javascript, и, возможно, это потому, что я слишком долго смотрел на экран, но я не могу заставить этот оператор else запускаться для событий dblclick.

 // react to double click .on() event
function doubleclicked(d) {
  if (d.fx == null & d.fy == null){
    console.info("d.fx and d.fy are null, fixing point");
    d.fx = d.x;
    d.fy = d.y;

  d3.select(this).select("text").transition()
        .duration(750)
        .attr("x", 22)
        .style("stroke", "black")
        .style("font", "10px sans-serif")
        .style("font-weight", "normal")
        .style("weight", "normal")
        .style("pointer-events", "none");

    d3.select(this).select("circle").transition()
      .duration(750)
        .attr("r", 16)
        .style("stroke-width", "1.5px")
        .style("fill","light gray")
        .style("stroke","black");
  } else{ 
    console.info('whyyyy wont this work');
      // you can set null, or delete d.fx, delete d.fy keys
      d.fx = null;
      d.fy = null;
  d3.select(this).select("text").transition()
        .duration(750)
        .attr("x", 22)
        .style("stroke", "blue")
        .style("stroke-width", ".5px")
        .style("font", "20px sans-serif");


    d3.select(this).select("circle").transition()
        .duration(750)
        .attr("r", 16);};

    };

В документации и SO-ссылке здесь я могу успешно установить узел в фиксированное положение (если оператор выполняется). Но я не могу заставить оператор else сработать, и я уверен, что это какая-то глупость, которую я упускаю из виду. У кого-нибудь есть идеи?

Я добавил свои функции перетаскивания, так как чувствую, что это как-то связано с этим.

function dragstarted(d) {
      console.info('drag start');
      if (!d3.event.active) force.alphaTarget(0.3).restart();
      d.fx = d.x;
      d.fy = d.y;
    };
function dragged(d) {
  console.info('drag mid');
  d.fx = d3.event.x;
  d.fy = d3.event.y;
};

function dragended(d) {
  console.info('drag end');
  if (!d3.event.active) force.alphaTarget(0);
  if (d.fx == null && d.fy ==null){
     d.fx = d.x;
     d.fy = d.y;
  }
  else{
    d.fx = null;
    d.fy = null;
  }

во время перетаскивания вы установили d.fx. В dragend вы очищаете d.fx, поэтому для двойного щелчка d.fx==null вы не можете дважды щелкнуть при перетаскивании

rioV8 17.02.2019 16:15

Хорошо, у меня было ощущение, что это может быть связано с этим, что было бы хорошим способом предотвратить перетаскивание, прерывающее двойной щелчок?

codebrotherone 17.02.2019 16:23
d.fx == null & d.fy == null это опечатка? В JavaScript & отличается от &&.
Gerardo Furtado 17.02.2019 21:13

внесли все необходимые изменения, чтобы скрипт запустился. @GerardoFurtado Я внес изменения (хороший улов)

codebrotherone 18.02.2019 15:02

@rioV8 спасибо за подсказку.

codebrotherone 18.02.2019 15:03
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
61
0

Другие вопросы по теме