Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Описать самосоздающуюся функцию (https://javascript.ru/forum/misc/82500-opisat-samosozdayushhuyusya-funkciyu.html)

ABitOfJS 17.05.2021 12:39

Описать самосоздающуюся функцию
 
Доброго времени! Написал функцию, создающую другие функции:
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... нет, т.к. их количество неограниченно.

ksa 17.05.2021 12:50

Цитата:

Сообщение от ABitOfJS
их количество неограниченно

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

Не обязательно вешать обработчики на каждый элемент. Можно вешать обработчик на родителя и проверять на каком элементе сработал вызов события.
После этого выполнять нужные действия...

ksa 17.05.2021 12:51

Цитата:

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

Можно делать так...

const deletetask[lscounter()] = function() {}

ABitOfJS 17.05.2021 12:55

Функция setnewtask() создаётся при нажатии на кнопку. На кнопку можно нажать 1 раз, а можно 100. Объекты (div), которые создаются функцией setnewtask(), можно удалить при помощи deletetask...(), которая также создаётся setnewtask(). Это и есть логика приложения :)

ksa 17.05.2021 14:03

Цитата:

Сообщение от ABitOfJS
Это и есть логика приложения

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

Если бы ты не ленился и сделал тестовый пример - на нем можно было бы показать разные альтернативные решения.

рони 17.05.2021 14:32

:-? подожду переводчика ...

ABitOfJS 30.05.2021 23:29

Продолжаю тему: реальный пример здесь: https://codepen.io/MadMot/pen/JjWRPqg
Основной вопрос: как описать функцию для удаления заметки?
Дополнительно: проблема 1: при выставлении тёмного режима и следующем вызове окна создания заметки окно всё-равно меняет цвет на белый; проблема 2: как передать из textarea в заметку текст со всеми абзацами пробелами?

рони 31.05.2021 00:13

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);


Часовой пояс GMT +3, время: 11:37.