Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.07.2021, 00:32
Профессор
Отправить личное сообщение для miltorg Посмотреть профиль Найти все сообщения от miltorg
 
Регистрация: 19.09.2019
Сообщений: 154

Как избежать повторов?
Есть код:

v1.ondrop = drop_handler;
v1.ondragover= dragover_handler;
v2.ondrop = drop_handler;
v2.ondragover= dragover_handler;
v3.ondrop = drop_handler;
v3.ondragover= dragover_handler;
v4.ondrop = drop_handler;
v4.ondragover= dragover_handler;


k1.ondragstart=dragstart_handler;
k1.ondragend = dragend_handler;
k2.ondragstart=dragstart_handler;
k2.ondragend = dragend_handler;
k3.ondragstart=dragstart_handler;
k3.ondragend = dragend_handler;
k4.ondragstart=dragstart_handler;
k4.ondragend = dragend_handler;
k5.ondragstart=dragstart_handler;
k5.ondragend = dragend_handler;
k6.ondragstart=dragstart_handler;
k6.ondragend = dragend_handler;
k7.ondragstart=dragstart_handler;
k7.ondragend = dragend_handler;
k8.ondragstart=dragstart_handler;
k8.ondragend = dragend_handler;

Как избежать повторов? Тем более что до конца не ясно сколько будет v1..vn

Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 07.07.2021, 07:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

miltorg,
сделать цикл или использовать родителя.
Ответить с цитированием
  #3 (permalink)  
Старый 07.07.2021, 16:58
Профессор
Отправить личное сообщение для miltorg Посмотреть профиль Найти все сообщения от miltorg
 
Регистрация: 19.09.2019
Сообщений: 154

Сообщение от рони Посмотреть сообщение
miltorg,
сделать цикл или использовать родителя.
А цикл по чём? v1...vn - это <div> - количество которых не известно

А родителя это как? Намекните пожалуйста.
Я даже не могу правильно сформулировать вопрос для Гугла

Спасибо.
Ответить с цитированием
  #4 (permalink)  
Старый 07.07.2021, 17:10
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,209

Сообщение от miltorg
v1...vn - это <div> - количество которых не известно
Но их как-то можно выбрать... Например дать им некий общий класс.

Сообщение от miltorg
А родителя это как? Намекните пожалуйста.
Пора тебе делать тестовый пример.
На нем и будут показывать.
Ответить с цитированием
  #5 (permalink)  
Старый 07.07.2021, 19:41
Профессор
Отправить личное сообщение для miltorg Посмотреть профиль Найти все сообщения от miltorg
 
Регистрация: 19.09.2019
Сообщений: 154

Сообщение от ksa Посмотреть сообщение

Пора тебе делать тестовый пример.
На нем и будут показывать.
<table class="vse">
  <tr>
    <td>




<div class="ramka">
<div class="zag_ramka">
    2021-08-21T05:00:00</div>
<div class="otstup">

  <div id="v1" data-myid="2523">
  2523        gggg    </div>
  
  <br>----<br>
  <div id="v2" data-myid="2525">  
  2525   sssssssss  оллл    </div>  
   
  </div>
  </div>

  
<div class="ramka">
<div class="zag_ramka">
    2021-07-09T05:00:00</div>
<div class="otstup">

  <div id="v3" data-myid="2585">
  2585   sssssss fffffff    </div>
  
  <br>----<br>
  <div id="v4" data-myid="2586">  
  2586   hhhhhh hhhhhhh  <p>Нужен кран прораб 222322</p>
  </div>  
   
</div>
</div>

    <td>

<div class="kran">

<div id="k1" draggable="true">11111111</div>




<div id="k2" draggable="true">22222222</div>




<div id="k3" draggable="true">3333333</div>

</div></table>




<script>
  
function dragstart_handler(ev) {
 console.log("dragStart");
 
}
function dragover_handler(ev) {
 console.log("dragOver");

}
function drop_handler(ev) {
  console.log("Drop");

}


function dragend_handler(ev) {
  console.log("dragEnd");


}

v1.ondrop = drop_handler;
v1.ondragover= dragover_handler;
v2.ondrop = drop_handler;
v2.ondragover= dragover_handler;
v3.ondrop = drop_handler;
v3.ondragover= dragover_handler;
v4.ondrop = drop_handler;
v4.ondragover= dragover_handler;


k1.ondragstart=dragstart_handler;
k1.ondragend = dragend_handler;
k2.ondragstart=dragstart_handler;
k2.ondragend = dragend_handler;
k3.ondragstart=dragstart_handler;
k3.ondragend = dragend_handler;



</script>

Последний раз редактировалось miltorg, 07.07.2021 в 19:44.
Ответить с цитированием
  #6 (permalink)  
Старый 07.07.2021, 19:43
Профессор
Отправить личное сообщение для miltorg Посмотреть профиль Найти все сообщения от miltorg
 
Регистрация: 19.09.2019
Сообщений: 154

Сообщение от ksa Посмотреть сообщение
Но их как-то можно выбрать... Например дать им некий общий класс.
А дальше то что?
Ответить с цитированием
  #7 (permalink)  
Старый 07.07.2021, 21:04
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,583

class Drag {
  drop = drop_handler;
  dragover = dragover_handler;
  dragstart =dragstart_handler;
  dragend = dragend_handler;
  
  events = ['dragover', 'drop', 'dragstart', 'dragend'];
  
  constructor(targetSelector, elementSelector) {
    this.targetSelector = targetSelector;
    this.elementSelector = elementSelector;
    this.start();
  }
  
  handleEvent(event) {
    let { type, target } = event;

    switch(type) {
      case 'dragover':
      case 'drop':
        target = target.closest(this.targetSelector);
        break;
      case 'dragstart':
      case 'dragend':
        target = target.closest(this.elementSelector)
        break;
    }
    
    if(target)
      this[type].call(target, event);
  }

  start() {
    this.events.forEach(type => document.addEventListener(type, this));
    return this;
  }
  stop() { 
    this.events.forEach(type => document.removeEventListener(type, this));
    return this;
  }
}

const drag = new Drag('.drag-target', '.drag-element');
__________________
29375, 35

Последний раз редактировалось Aetae, 08.07.2021 в 01:18.
Ответить с цитированием
  #8 (permalink)  
Старый 07.07.2021, 21:18
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,209

Сообщение от miltorg
А дальше то что?
Обрабатывать в цикле.

Пример конечно капец какой корявый...
Что ты там гонощишь в итоге?
Ответить с цитированием
  #9 (permalink)  
Старый 07.07.2021, 22:11
Профессор
Отправить личное сообщение для miltorg Посмотреть профиль Найти все сообщения от miltorg
 
Регистрация: 19.09.2019
Сообщений: 154

Сообщение от Aetae Посмотреть сообщение
class Drag {
  drop = drop_handler;
  dragover = dragover_handler;
  dragstart =dragstart_handler;
  dragend = dragend_handler;
  
  ...

Не проверял.)
Работает. Ура! Огромное спасибо!
Ответить с цитированием
  #10 (permalink)  
Старый 07.07.2021, 22:29
Профессор
Отправить личное сообщение для miltorg Посмотреть профиль Найти все сообщения от miltorg
 
Регистрация: 19.09.2019
Сообщений: 154

drop_handler не срабатывает. А он нужен.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как должна работать функция добавления товара в корзину? nastya97core Общие вопросы Javascript 2 12.05.2021 17:22
Как избежать ошибки по ограничению открытых файлов? Tipylja Node.JS 3 17.08.2018 19:43
как избежать вызова события 2 раза Freeman777 jQuery 2 27.10.2014 11:45
Как избежать повторения кода Эдди jQuery 4 02.08.2014 22:33
Мотоциклисты есть? l-liava-l Оффтопик 13 04.07.2014 13:35