Как использовать d3.drag ()?

Что вызывает следующую ошибку TypeError?

TypeError: callback is undefined

Мой код выглядит так:

    <script>
    var svg = d3.select("body").append("svg")
        .attr("width", 500)
        .attr("height", 500)
        .call(drag)

    var drag = d3.drag()
        .on("start", start)

    function start(d){
    };

    </script>

@altocumulus Жаль, что вы его редактировали, мне очень нравился d3.drug ... На самом деле, это может быть название нового плагина, который я напишу ...

Gerardo Furtado 07.04.2018 15:26

@GerardoFurtado Хороший плагин! Не могли бы вы поделиться более подробной информацией? Могу ли я выступить в роли бета-тестера? Передайте d3.drug, так сказать ...

altocumulus 07.04.2018 16:23
d3.drug будет плагином, настолько полным анти-шаблонов и бессмысленных фрагментов, что пользователи быстро поймут выбор имени ...
Gerardo Furtado 07.04.2018 16:29
Поведение ключевого слова "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
3
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не установили значение drag во время его использования, поэтому он принимает значение по умолчанию, undefined.

var svg = d3.select("body").append("svg")
    .attr("width", 500)
    .attr("height", 500)
    .call(drag)

Это связано с тем, что объявление drag (var drag) поднято в начало кода. Вы можете решить проблему, установив значение drag перед его использованием:

var drag = d3.drag()
    .on("start", start)

var svg = d3.select("body").append("svg")
    .attr("width", 500)
    .attr("height", 500)
    .call(drag)

function start(d){
};

@Downvoter, расскажите, что не так с этим ответом.

wizzwizz4 07.04.2018 12:53

Я не голосовал против этого, но ваше предположение об использовании start() неверно. Эта функция не является частью проблемы; это правильный способ создать обработчик перетаскивания в D3 и зарегистрировать прослушиватель, а именно start(d) для начального события. Думаю, это и стало причиной голосования против. Тем не менее, ваше первое предположение о том, что объявление var drag поднимается, пока назначение выполняется после использования в .call(drag), является точным и истинной причиной ошибки. Я предлагаю вам удалить вторую часть вашего сообщения и вместо этого добавить фрагмент с исправленным кодом.

altocumulus 07.04.2018 14:02

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