Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.05.2021, 12:39
Интересующийся
Отправить личное сообщение для ABitOfJS Посмотреть профиль Найти все сообщения от ABitOfJS
 
Регистрация: 15.05.2020
Сообщений: 16

Описать самосоздающуюся функцию
Доброго времени! Написал функцию, создающую другие функции:
function setnewtask() {
...
tasklink.innerHTML = localStorage.getItem('task' + lscounter) + '<button class="deletebutton" onclick="deletetask' + lscounter + '()">×</button>';
...
}

tasklink - это переменная, создающая новый div (для информации), lscounter - просто число. Вопрос следующий: создаётся кнопка с функцией deletetask + lscounter (т.е. deletetask1, deletetask2, deletetask...). А как описать такого рода функцию, не задавая конкретного имени (я пробовал: function deletetask + lscounter() {}, но безуспешно)
Вопрос очень важный, возможности описывать каждую функцию deletetask... нет, т.к. их количество неограниченно.
Ответить с цитированием
  #2 (permalink)  
Старый 17.05.2021, 12:50
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,226

Сообщение от ABitOfJS
их количество неограниченно
Значит с логикой у твоего "приложения" что-то не так...

Не обязательно вешать обработчики на каждый элемент. Можно вешать обработчик на родителя и проверять на каком элементе сработал вызов события.
После этого выполнять нужные действия...
Ответить с цитированием
  #3 (permalink)  
Старый 17.05.2021, 12:51
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,226

Сообщение от ABitOfJS
я пробовал: function deletetask + lscounter() {}, но безуспешно
Можно делать так...

const deletetask[lscounter()] = function() {}
Ответить с цитированием
  #4 (permalink)  
Старый 17.05.2021, 12:55
Интересующийся
Отправить личное сообщение для ABitOfJS Посмотреть профиль Найти все сообщения от ABitOfJS
 
Регистрация: 15.05.2020
Сообщений: 16

Функция setnewtask() создаётся при нажатии на кнопку. На кнопку можно нажать 1 раз, а можно 100. Объекты (div), которые создаются функцией setnewtask(), можно удалить при помощи deletetask...(), которая также создаётся setnewtask(). Это и есть логика приложения
Ответить с цитированием
  #5 (permalink)  
Старый 17.05.2021, 14:03
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,226

Сообщение от ABitOfJS
Это и есть логика приложения
Я тебе уже описал как такое можно реализовать без "генерации" кучи функций...

Если бы ты не ленился и сделал тестовый пример - на нем можно было бы показать разные альтернативные решения.
Ответить с цитированием
  #6 (permalink)  
Старый 17.05.2021, 14:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

подожду переводчика ...
Ответить с цитированием
  #7 (permalink)  
Старый 30.05.2021, 23:29
Интересующийся
Отправить личное сообщение для ABitOfJS Посмотреть профиль Найти все сообщения от ABitOfJS
 
Регистрация: 15.05.2020
Сообщений: 16

Продолжаю тему: реальный пример здесь: https://codepen.io/MadMot/pen/JjWRPqg
Основной вопрос: как описать функцию для удаления заметки?
Дополнительно: проблема 1: при выставлении тёмного режима и следующем вызове окна создания заметки окно всё-равно меняет цвет на белый; проблема 2: как передать из textarea в заметку текст со всеми абзацами пробелами?
Ответить с цитированием
  #8 (permalink)  
Старый 31.05.2021, 00:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

ABitOfJS,
1не надо так делать .style="
надо не стирать весь стиль, а менять нужные свойства стиля.
читать https://learn.javascript.ru/styles-and-classes
исправить style в js и сделать разметку страницы
для образца
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>

</body>
</html>

2
var ntc = document.getElementById("task").value;
  ntc = ntc.replace(/\n/g,  "<br>");
  console.log(ntc);

Последний раз редактировалось рони, 31.05.2021 в 00:55.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить имя функции внутри функции не используя callee drwhite Общие вопросы Javascript 39 12.02.2020 22:48
передать параметры в функцию jQuery AJAX Lion_astana Общие вопросы Javascript 7 21.02.2014 17:25
Расширение для Safari. Как вызвать функцию из popover в global page? housewm Opera, Safari и др. 0 21.12.2013 06:07
проблема с передачей параметров в функцию bartonom Элементы интерфейса 4 19.09.2011 12:41
Как получить указатель на элемент вызвавший функцию pelayo Общие вопросы Javascript 9 29.06.2010 23:32