|
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 410
|
|||||||||||
Замена подстроки в строке (можно ли динамически)19.09.2025, 22:27. Показов 1442. Ответов 28
Метки нет (Все метки)
Здравствуйте!
Будьте добры, не подскажите. Есть:
В примере элементу массива присваиваю новое значение, но это только для понимания, что должно быть на выходе. Первый самый простой вариант, который приходит в голову - найти 1-й и последний символы и выполнить замену. Но нет ли варианта более лучшего, например, можно ли в строку вставить переменную, типа: m_st[0]= '<p>...</p><button class="knop" onclick= {nam_per} '<p>...</p>'; чтобы при выводе m_st[0] изменяла значение согласно значению переменной nam_per ?
0
|
|||||||||||
| 19.09.2025, 22:27 | |
|
Ответы с готовыми решениями:
28
Возможно ли одним оператором заменить все вхождения подстроки в данную стороку? |
|
14305 / 9389 / 1355
Регистрация: 21.01.2016
Сообщений: 35,401
|
|
| 20.09.2025, 03:31 | |
|
755, да почитай ты уже наконец про KnockoutJS, Vue или React...
Вот эта вот ручная возня с DOM, она не решает ничего, только затягивает в ненужные сложности.
0
|
|
|
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 410
|
|||
| 20.09.2025, 08:47 [ТС] | |||
|
.. а ранее мне советовали прочитать документацию по mysql. И действительно очень хороший совет. И даже сохранил ссылки именно на документацию в надежде, что найдется время воспользоваться данным советом. А еще будь я в начале пути выбрал бы и соответственно начал бы использовать другую БД. И так только читал бы и читал... Но самое главное - недостаточно просто чтения. Вчера в поисках конструкций по данному вопросу попалась информация по шаблонным литералам. Интересная тема (не смог понять, подходит ли для решения моей проблемы) , но просто быстрого чтения (по крайней мере для меня) оказалось недостаточно - по некоторым темам, чтобы их освоить, надо написать десятки примеров, чтобы понять механизм действия. Асинхронность в js очень важная тема, но до сих пор (хоть и потратил на нее немало времени) min пара моментов остается неясной.
0
|
|||
|
Заблокирован
|
|||
| 20.09.2025, 09:06 | |||
0
|
|||
|
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 410
|
||||||
| 20.09.2025, 09:42 [ТС] | ||||||
|
ФУ, вам видимо нравится: вас блокируют, а вы вновь регистрируетесь ? Интересно, что это за черта? Тщеславие?
Вот уж не думал, что
0
|
||||||
|
1282 / 1247 / 186
Регистрация: 21.01.2024
Сообщений: 5,748
|
|||||||
| 20.09.2025, 10:04 | |||||||
Добавлено через 2 минуты И непонятно, зачем <a>, если это нужно только для того, что бы вызвать функцию. Есть простое правило - <a> - если надо куда то перейти Если просто что то сделать без перехода, то <button>
1
|
|||||||
|
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 410
|
||||
| 20.09.2025, 10:35 [ТС] | ||||
|
0
|
||||
|
3841 / 1690 / 431
Регистрация: 14.03.2022
Сообщений: 4,298
|
|||||||
| 20.09.2025, 14:01 | |||||||
|
Только у тебя опять проблемы с синтаксисом... ![]()
P.S. Но я полностью поддерживаю предыдущих камрадов. 755, ты роешь подземный ход на чердак.
1
|
|||||||
|
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 410
|
||||||||
| 20.09.2025, 16:25 [ТС] | ||||||||
|
Поэтому не понял, к каким действиям относится фраза "роешь подземный ход на чердак" Если отсутствие const, то хотел показать, что это переменная. А в примере не важно, var она или let. И видимо не смог объяснить, что хочу. С шаблонными строками знаком, но мне не нравится их набирать, проще через '__'+перем+'__'. Если правильно понимаю, разницы для работы нет? Пока не увидел, как использование шаблонных строк может помочь: мне нужно несколько иное, чем в вашем примере: строка содержит переменную с именем функции "kn_1". А при вызове данной функции значение переменной меняется на "kn_2". И соответственно чтобы в строке m_st[0] произошли изменения: имя новой функции и текст кнопки. А через шаблонную строку это не работает (по крайней мере у меня не получилось). l
0
|
||||||||
|
1282 / 1247 / 186
Регистрация: 21.01.2024
Сообщений: 5,748
|
|||||||||||
| 20.09.2025, 18:40 | |||||||||||
|
При работе с DOM надо придерживаться правила - менять только то, что меняется.
Так и быстрее и многих ошибок избежать можно.
1
|
|||||||||||
|
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 410
|
||||||
| 20.09.2025, 19:39 [ТС] | ||||||
|
voraa, спасибо большое за ответ.
Вначале так и было. Но! Но, увы, понял - в данном случае данный вариант не подходит: • m_st[*] формируется на сервере. Каждый элемент массива соответствует одной записи; их структура "<div> ... </div> " кстати выводится:
Изменение же кнопки по предложенному Вами варианту не подойдет, потому что возможен повторный вывод того же элемента массива. Да, хочу менять в строке только только изменяемые элементы. Пока, как написал, вижу решение в виде замены подстроки. Но, спасибо за совет: думал изменить строку и через innerHTML обновить изменения, но после Вашего совета подумал, что есть смысл изменять кнопки как Вы предложили и как у меня и было реализовано при одновременной корректировки элемента массива (ока по такому варианту, если не появится лучше): m_f21 [i_mStr][i][1]= m_f21 [i_mStr][i][1].replace(m_f21 [i_mStr][i][1].substring(nbs_mF21_iz, nes_mF21_iz), st_iz));
0
|
||||||
| 21.09.2025, 17:06 | |
|
Какая разница сколько элементов и откуда берется массив?
Читаем про "делегирование" и вешаем обработчик события на родительский элемент (который всегда есть на странице). Создаем все элементы в соответствии с массивом. Обработчик события обрабатывает клики по кнопкам и: 1. Проверяет текущее состояние элемента (можно, например атрибут кнопке задать) которое хранит открыт или закрыт элемент или же можно ориентироваться на соответствующий класс стилей (да даже на тот же текст - хотя это и не лучший вариант) 2. В соответствии с текущим состоянием выполняет необходимую логику 3. Инвертирует состояние: меняет флаг, класс стилей, текст - все что требуется Если необходимо работать с массивом (например менять что то там) - все то же самое: храните либо ссылку на элемент массива, либо индекс в массиве, либо любой другой признак позволяющий найти текущий элемент в этом массиве
1
|
|
|
3841 / 1690 / 431
Регистрация: 14.03.2022
Сообщений: 4,298
|
|||||
| 21.09.2025, 18:36 | |||||
![]() Добавлено через 5 минут - Многострочность. - Теговые шаблоны https://habr.com/ru/companies/... les/511590 У простых строк их нет. Добавлено через 2 минуты Т.ч. этот момент тебе нужно "подтянуть". Иначе тебя мало кто будет понимать и предлагать "не то, что тебе нужно". ![]() Добавлено через 1 минуту
2
|
|||||
|
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 410
|
||
| 21.09.2025, 21:58 [ТС] | ||
|
Раньше понимал с полуслова... А теперь: то ли поглупел, то ли не хватает знаний... Извините, voral, что не сразу ответил, но перечитывал и пытался осмыслить написанное. И спасибо большое за советы. Правильно ли понял, что первая часть Вашего текста касается работы с DOM элементами, а последний абзац - советы по работе с массивами? Если да, то извините, вопрос был несколько о другом: как в элементе массива (известно каком) выполнить замену (у меня как частный случай у кнопки поменять onclick). Варианты c использованием substr(-ing) или replace знаю.
Но было интересно, можно ли задать (и стоит ли оно того) шаблонную строку с именем переменной, чтобы в ней менялся текст при изменении переменной (но я уже повторяюсь, а как другими словами передать смысл - не смог придумать). В отношении же примеров и объяснений. В самом начале привел (предварительно проверив его работоспособность) пример того, что у меня на входе и что надо на выходе. А также постарался объяснить, что хочу. Мне казалось, что все просто. Но, увы, видимо не очень. И сейчас в задумчивости: стоит ли тратить ваше внимание на данный вопрос ? (если только для кого-то еще, кому интересна данная тема - видел, что уже до меня на других форумах поднимали и не раз данный вопрос, только более узко и конкретно) - замену строк решил через replace (работает, но завтра еще повнимательнее проверю). И этот варианта мне пока хватит.
0
|
||
|
1282 / 1247 / 186
Регистрация: 21.01.2024
Сообщений: 5,748
|
|||||||
| 21.09.2025, 22:23 | |||||||
Сообщение было отмечено 755 как решение
Решение
1
|
|||||||
|
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 410
|
|
| 22.09.2025, 08:13 [ТС] | |
|
Спасибо, voraa, именно такое решение и имел в виду.
0
|
|
| 22.09.2025, 08:37 | ||||||||||||
|
Пока исхожу из следующих пунктов: 1. У вас блоки приходят как массив готовые HTML. Что в реальных проектах не совсем правильно. Т.е. по идее лучше если будет приходить массив типа:
2. Вам при клике на кнопку kn_x нужном менять содержимое блока на содержимое следующего элемента, выполнять некий дополнительный функционал зависящий от конкретного элемента и выполнять какие то изменения элемента массива 3. Не совсем понятно что должна делать кнопка close - поэтому будем считать что просто закрыть - очистить блок далее пример кода и комментарии прямо в нем
1
|
||||||||||||
|
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 410
|
||||
| 22.09.2025, 09:20 [ТС] | ||||
|
И самое важно, поэтому поставил его в конец: m_st[0]= '<p>...</p><button class="knop" onclick="kn_1 ('+id+');"> kn_1 </button>'+ "<a href='#' class= 'txt' onclick='kn_1 ();'> open </a>"+ '<p>...</p>'; Хотя правильнее было бы еще указать, что она обернута в <div>. Вы меня смутили. Считал это логичным и более быстрым по скорости: сформировать код html и его уже вывести на экран. Почему не совсем правильно? И какие риски, если оставить так? И (или) нужно ли переделывать код?
0
|
||||
| 22.09.2025, 09:49 | |||||||
. Из возможных мелочей - трафик меньшеНо основная суть моего примера скорее именно в делегировании. Т.е. клик обрабатывается обработчиком родительского блока. Если про избранное. То тогда тут (если править мой пример) я бы сделал так: 1. в массиве флаг opened заменил на favorite 2. При получении списка в ответ на запрос проверяем, в избранном или нет. И уже с displayData далее работал вместо data (ну или исходный массив менять - тут по задаче)
4. При клике кнопка должна выполнять действие в соответствии с флагом favorite. (одна и та же кнопка на оба действия - текст кнопки можно менять в соответствтии)
1
|
|||||||
|
1282 / 1247 / 186
Регистрация: 21.01.2024
Сообщений: 5,748
|
||
| 22.09.2025, 09:49 | ||
|
Если, вдруг, надо поменять дизайн страницы, то править лучше в одном месте, а не в разных местах. Поэтому обычно либо делают всю страницу на php (или на другом серверном скриптовом языке) и она целиком обрабатывается на сервере и в браузер передается готовый результат. Либо есть страница html, а с сервера в нее по ajax передаются только данные (а не html код), и сама страница уже обрабатывает эти данные и меняет свои элементы.
1
|
||
| 22.09.2025, 09:49 | |
|
Помогаю со студенческими работами здесь
20
Замена подстрок Замена картинки по подстроке Чем можно заменить заменить toggle() ? Как вставить подстроку в строку напр. с 5-го символа исх. строки? JavaScript!? Работа со строками, вставка подстроки в строку, prototype!? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|