Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 410

Замена подстроки в строке (можно ли динамически)

19.09.2025, 22:27. Показов 1442. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Будьте добры, не подскажите.
Есть:
HTML5
1
<div id="inf1"> inf1  </div>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
 id= 11;
 m_st= new Array ();
 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>';
 inf1.innerHTML = m_st[0];
 
function kn_1 (id)  {
 m_st[0]= '<p>...</p><button class="knop" onclick="kn_2 ('+id+');"> kn_2 </button>'+
    "<a href='#' class= 'txt' onclick='kn_2 ();'> close </a>"+
    '<p>...</p>';
    inf1.innerHTML = m_st[0];
}
При клике на kn_1 надо заменить вызываемую функцию и тексты кнопок.
В примере элементу массива присваиваю новое значение, но это только для понимания, что должно быть на выходе.

Первый самый простой вариант, который приходит в голову - найти 1-й и последний символы и выполнить замену.
Но нет ли варианта более лучшего, например, можно ли в строку вставить переменную, типа:
m_st[0]= '<p>...</p><button class="knop" onclick= {nam_per} '<p>...</p>';
чтобы при выводе m_st[0] изменяла значение согласно значению переменной nam_per ?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.09.2025, 22:27
Ответы с готовыми решениями:

Замена подстроки в строке на значение переменной
День добрый! Немного нетривиальная задача. Есть строка. В ней есть поля в формате в формате...

Подскажите регулярное выражение, при помощи которого можно извлечь все находящееся между двумя заданными подстроками.
Подскажите регулярное выражение, при помощи которого можно было бы извлечь все находящееся между...

Возможно ли одним оператором заменить все вхождения подстроки в данную стороку?
Возможно ли одним оператором заменить все вхождения подстроки в данную стороку? Если да, то как?

28
Эксперт .NET
 Аватар для Usaga
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  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
755, да почитай ты уже наконец про KnockoutJS, Vue или React...
Usaga, спасибо за совет.

.. а ранее мне советовали прочитать документацию по mysql. И действительно очень хороший совет. И даже сохранил ссылки именно на документацию в надежде, что найдется время воспользоваться данным советом. А еще будь я в начале пути выбрал бы и соответственно начал бы использовать другую БД. И так только читал бы и читал...
Но самое главное - недостаточно просто чтения. Вчера в поисках конструкций по данному вопросу попалась информация по шаблонным литералам. Интересная тема (не смог понять, подходит ли для решения моей проблемы) , но просто быстрого чтения (по крайней мере для меня) оказалось недостаточно - по некоторым темам, чтобы их освоить, надо написать десятки примеров, чтобы понять механизм действия. Асинхронность в js очень важная тема, но до сих пор (хоть и потратил на нее немало времени) min пара моментов остается неясной.

Цитата Сообщение от Usaga Посмотреть сообщение
Вот эта вот ручная возня с DOM, она не решает ничего, только затягивает в ненужные сложности.
Ничего сложного в ручной замене нет. Просто подумал, что если есть конструкция замены подстроки через шаблон в js - было бы интересно ее освоить и использовать.
0
Заблокирован
20.09.2025, 09:06
Цитата Сообщение от 755 Посмотреть сообщение
было бы интересно ее освоить
Пока будешь что-то осваивать, появятся новые более современные решения. Необходимо не осваивать, а делать сайты. Толку от твоего осваивания нет никакого.
Цитата Сообщение от 755 Посмотреть сообщение
new Array ();
Устаревшее. Видишь, не успел освоить, а уже устарело
0
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 410
20.09.2025, 09:42  [ТС]
ФУ, вам видимо нравится: вас блокируют, а вы вновь регистрируетесь ? Интересно, что это за черта? Тщеславие?

Вот уж не думал, что
JavaScript
1
new Array ();
может устареть.
0
 Аватар для voraa
1282 / 1247 / 186
Регистрация: 21.01.2024
Сообщений: 5,748
20.09.2025, 10:04
Цитата Сообщение от 755 Посмотреть сообщение
Вот уж не думал, что
JavaScriptСкопировано
1
new Array ();
может устареть.
Слишком тяжеловесно. Обычно пишут
JavaScript
1
const m_st= [];
А бездумно пользоваться innerHTML - вообще негоже. Потом можно таких багов словить.

Добавлено через 2 минуты
И непонятно, зачем <a>, если это нужно только для того, что бы вызвать функцию.
Есть простое правило - <a> - если надо куда то перейти
Если просто что то сделать без перехода, то <button>
1
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 410
20.09.2025, 10:35  [ТС]
Цитата Сообщение от voraa Посмотреть сообщение
Слишком тяжеловесно. Обычно пишут
const m_st= [];
В каком смысле тяжеловесно? Для работы интерпретатора? Или для восприятия программиста?
Цитата Сообщение от voraa Посмотреть сообщение
А бездумно пользоваться innerHTML - вообще негоже.
Да, читал. Несмотря на советы (вполне возможно по непониманию) для одиночного вывода использую innerHTML (исхожу из того, что выводимый код формируется или на сервере или выводимые данные кроме как самим клиентом не могут быть изменены) или insertAdjacentHTML (а он также небезопасен по отзывам)
Цитата Сообщение от voraa Посмотреть сообщение
И непонятно, зачем <a>, если это нужно только для того, что бы вызвать функцию.
Как-то попались примеры, в которых при наведении курсора на кнопку , текст справа (или слева) сдвигался, а у кнопки появлялся текстовый комментатор, который одновременно был и аналогичной ссылкой. Для кнопки использовался button, для текста a. Возможно есть и лучшие механизмы, но меня (по крайней мере на том этапе) устроил и такой.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3841 / 1690 / 431
Регистрация: 14.03.2022
Сообщений: 4,298
20.09.2025, 14:01
Цитата Сообщение от 755 Посмотреть сообщение
можно ли в строку вставить переменную, типа:
JavaScript
1
m_st[0]= '<p>...</p><button class="knop" onclick= {nam_per} '<p>...</p>';
чтобы при выводе m_st[0] изменяла значение согласно значению переменной nam_per ?
Конечно можно. Шаблонные строки для того и сделаны...
Только у тебя опять проблемы с синтаксисом...

JavaScript
1
2
const nam_per = '"alert(123)"'
m_st[0]= `<p>...</p><button class="knop" onclick= ${nam_per} <p>...</p>`;
Добавлено через 2 минуты
P.S.
Но я полностью поддерживаю предыдущих камрадов.
755, ты роешь подземный ход на чердак.
1
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 410
20.09.2025, 16:25  [ТС]
Цитата Сообщение от krvsa Посмотреть сообщение
Но я полностью поддерживаю предыдущих камрадов.
755, ты роешь подземный ход на чердак
krvsa, да я не против мнений предыдущих товарищей: не сомневаюсь, что Usaga, дал хороший совет - но я выбрал в пользу программирования на чистых языках (по возможности). И пока мне неразумно отказываться от такой тактики - ибо большинство логики уже реализовано на них. От остальных вообще получил полезную информацию.
Поэтому не понял, к каким действиям относится фраза "роешь подземный ход на чердак"

Цитата Сообщение от krvsa Посмотреть сообщение
Шаблонные строки для того и сделаны...
Только у тебя опять проблемы с синтаксисом..
Прошу прощения, не уверен, что правильно понял, где ошибки синтаксиса.
Если отсутствие const, то хотел показать, что это переменная. А в примере не важно, var она или let.

И видимо не смог объяснить, что хочу. С шаблонными строками знаком, но мне не нравится их набирать, проще через '__'+перем+'__'. Если правильно понимаю, разницы для работы нет?

Пока не увидел, как использование шаблонных строк может помочь: мне нужно несколько иное, чем в вашем примере: строка содержит переменную с именем функции "kn_1". А при вызове данной функции значение переменной меняется на "kn_2". И соответственно чтобы в строке m_st[0] произошли изменения: имя новой функции и текст кнопки. А через шаблонную строку это не работает (по крайней мере у меня не получилось).

l
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
let nam_per = '"kn_1(123)" >kn_1'
m_st[0]= `<p>...</p><button class="knop" onclick= ${nam_per} </button><p>...</p>`;
 
 inf1.innerHTML = m_st[0];
 
function kn_1 (id)  {
    nam_per = '"kn_2 (123)"> kn_2'
 
      // nam_per [VB]→ [/VB]m_st[0]  - интересно было бы, если бы происходила автоматическая корректировка m_st[0]
       // при изм-нии nam_per, но быстрей всего так не бывает
       // ??? m_st[0] = ???
 
    inf1.innerHTML = m_st[0];
}
function kn_2 (id)  {
    alert ("kn_2")
}
0
 Аватар для voraa
1282 / 1247 / 186
Регистрация: 21.01.2024
Сообщений: 5,748
20.09.2025, 18:40
При работе с DOM надо придерживаться правила - менять только то, что меняется.
Так и быстрее и многих ошибок избежать можно.

HTML5
1
2
3
4
5
6
<div id="inf1">
    <p>...</p>
    <button  class="knop" onclick="kn_1 ('+id+');"> kn_1 </button>
    <a href='#' class= 'txt' onclick='kn_1 ();'> open </a>
    <p>...</p>
</div>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
id= 11;
const divinf = document.getElementById('inf1');
 
function kn_1 (id)  {
    const but = divinf.querySelector('button');
    const a = divinf.querySelector('a');
    but.onclick = () => kn_2 (id);
    but.textContent = ' kn_2 ';
    a.onclick = () => kn_2 ();
    a.textContent = ' close ';
}
1
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 410
20.09.2025, 19:39  [ТС]
voraa, спасибо большое за ответ.
Вначале так и было. Но!

Но, увы, понял - в данном случае данный вариант не подходит:
• m_st[*] формируется на сервере. Каждый элемент массива соответствует одной записи; их структура "<div> ... </div> " кстати выводится:
JavaScript
1
2
 for (let i= 2; i<= m_f21 [i_mStr][0][0]; i++)
   rec.insertAdjacentHTML('beforeend', m_f21 [i_mStr][i][1]);
Внутри много кнопок и вот сегодня сообразил, что min одну из них надо будет менять по описанному выше алгоритму.

Изменение же кнопки по предложенному Вами варианту не подойдет, потому что возможен повторный вывод того же элемента массива.

Да, хочу менять в строке только только изменяемые элементы. Пока, как написал, вижу решение в виде замены подстроки.

Но, спасибо за совет: думал изменить строку и через 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
3055 / 1455 / 264
Регистрация: 16.03.2008
Сообщений: 6,490
Записей в блоге: 2
21.09.2025, 17:06
Какая разница сколько элементов и откуда берется массив?

Читаем про "делегирование" и вешаем обработчик события на родительский элемент (который всегда есть на странице). Создаем все элементы в соответствии с массивом. Обработчик события обрабатывает клики по кнопкам и:

1. Проверяет текущее состояние элемента (можно, например атрибут кнопке задать) которое хранит открыт или закрыт элемент или же можно ориентироваться на соответствующий класс стилей (да даже на тот же текст - хотя это и не лучший вариант)
2. В соответствии с текущим состоянием выполняет необходимую логику
3. Инвертирует состояние: меняет флаг, класс стилей, текст - все что требуется

Если необходимо работать с массивом (например менять что то там) - все то же самое: храните либо ссылку на элемент массива, либо индекс в массиве, либо любой другой признак позволяющий найти текущий элемент в этом массиве
1
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3841 / 1690 / 431
Регистрация: 14.03.2022
Сообщений: 4,298
21.09.2025, 18:36
Цитата Сообщение от 755 Посмотреть сообщение
проще через '__'+перем+'__'
Хозяин - барин.

Добавлено через 5 минут
Цитата Сообщение от 755 Посмотреть сообщение
разницы для работы нет?
У шаблонных строк еще есть возможности...
- Многострочность.
- Теговые шаблоны
https://habr.com/ru/companies/... les/511590

У простых строк их нет.

Добавлено через 2 минуты
Цитата Сообщение от 755 Посмотреть сообщение
мне нужно несколько иное, чем в вашем примере
Пока у тебя с "объяснениями" не особо получается... И тестовые примеры ты не удосуживаешься делать...
Т.ч. этот момент тебе нужно "подтянуть". Иначе тебя мало кто будет понимать и предлагать "не то, что тебе нужно".

Добавлено через 1 минуту
Цитата Сообщение от 755 Посмотреть сообщение
Но, увы, понял - в данном случае данный вариант не подходит:
Эта музыка будет вечной если я заменю батарейки. (с)
2
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 410
21.09.2025, 21:58  [ТС]
Раньше понимал с полуслова... А теперь: то ли поглупел, то ли не хватает знаний... Извините, voral, что не сразу ответил, но перечитывал и пытался осмыслить написанное. И спасибо большое за советы. Правильно ли понял, что первая часть Вашего текста касается работы с DOM элементами, а последний абзац - советы по работе с массивами? Если да, то извините, вопрос был несколько о другом: как в элементе массива (известно каком) выполнить замену (у меня как частный случай у кнопки поменять onclick). Варианты c использованием substr(-ing) или replace знаю.
Но было интересно, можно ли задать (и стоит ли оно того) шаблонную строку с именем переменной, чтобы в ней менялся текст при изменении переменной (но я уже повторяюсь, а как другими словами передать смысл - не смог придумать).

Цитата Сообщение от krvsa Посмотреть сообщение
Иначе тебя мало кто будет понимать и предлагать "не то, что тебе нужно"
Спасибо, krvsa, но, если бы не получал практическую помощь, перестал бы обращаться с вопросами. Могу сказать, что Вы несколько раз очень мне помогли.

В отношении же примеров и объяснений. В самом начале привел (предварительно проверив его работоспособность) пример того, что у меня на входе и что надо на выходе. А также постарался объяснить, что хочу. Мне казалось, что все просто. Но, увы, видимо не очень.

И сейчас в задумчивости: стоит ли тратить ваше внимание на данный вопрос ? (если только для кого-то еще, кому интересна данная тема - видел, что уже до меня на других форумах поднимали и не раз данный вопрос, только более узко и конкретно) - замену строк решил через replace (работает, но завтра еще повнимательнее проверю). И этот варианта мне пока хватит.
0
 Аватар для voraa
1282 / 1247 / 186
Регистрация: 21.01.2024
Сообщений: 5,748
21.09.2025, 22:23
Лучший ответ Сообщение было отмечено 755 как решение

Решение

Цитата Сообщение от 755 Посмотреть сообщение
Но было интересно, можно ли задать (и стоит ли оно того) шаблонную строку с именем переменной, чтобы в ней менялся текст при изменении переменной (но я уже повторяюсь, а как другими словами передать смысл - не смог придумать).
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const fh = (fun, id, text) => `<p>...</p>
    <button  class="knop" onclick="${fun} (${id});"> ${fun} </button>
    <a href="#" class= "txt" onclick="${fun} ();"> ${text} </a>
    <p>...</p>`;
    
id= 11;
 m_st= new Array ();
 m_st[0]= fh('kn_1', id, 'open');
 inf1.innerHTML = m_st[0];
 
function kn_1 (id)  {
 m_st[0]= fh('kn_2', id, 'close');
    inf1.innerHTML = m_st[0];
}
1
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 410
22.09.2025, 08:13  [ТС]
Спасибо, voraa, именно такое решение и имел в виду.
0
3055 / 1455 / 264
Регистрация: 16.03.2008
Сообщений: 6,490
Записей в блоге: 2
22.09.2025, 08:37
Цитата Сообщение от 755 Посмотреть сообщение
Раньше понимал с полуслова...
В первую очередь вы не описали решаемую задачу. Вы тут описали в качестве задачи уже некое решение для решения какой то задачи (сорян за тафтологию). Описали бы задачу (как ее видит посетитель) - можно было бы дать более точно и правильное направление мысли.

Пока исхожу из следующих пунктов:
1. У вас блоки приходят как массив готовые HTML. Что в реальных проектах не совсем правильно. Т.е. по идее лучше если будет приходить массив типа:
JavaScript
1
2
3
4
5
6
7
8
9
10
[
    {
        title: 'news 1',
        body: 'news 1 body',
    },
    {
        title: 'news 2',
        body: 'news 2 body',
    },
]
И далее уже на его основе строить DOM. Можно шаблоном как выше показали, можно через createElement, или даже брать верстку из HTML (последнее позволит держать верстку в одном месте, а логику в другом).
2. Вам при клике на кнопку kn_x нужном менять содержимое блока на содержимое следующего элемента, выполнять некий дополнительный функционал зависящий от конкретного элемента и выполнять какие то изменения элемента массива
3. Не совсем понятно что должна делать кнопка close - поэтому будем считать что просто закрыть - очистить блок


далее пример кода и комментарии прямо в нем

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<div class="news" id="news">
</div>
<script>
    // каждый элемент описан темя свойствами: собственно сам контент,
    // функция - уникальный для каждого элемента функционал, который должен выполняться при клике на кнопку
    // opened - признак открыт элемент или закрыт - это для демонстрации как взаимодействовать с массивом
    var data = [
        {
            html: '<p>Item 1</p><button class="knop"> kn_1 </button><a href="javascript:void(0);" class="txt"> close </a><p>...</p>',
            handler: function () {
                console.log('echo 1');
            },
            opened: true
 
        },
        {
            html: '<p>Item 2</p><button class="knop"> kn_2 </button><a href="javascript:void(0);" class="txt"> close </a><p>...</p>',
            handler: function () {
                console.log('echo 2');
            },
            opened: false
        },
        {
            html: '<p>Item 3</p><button class="knop"> kn_3 </button><a href="javascript:void(0);" class="txt"> close </a><p>...</p>',
            handler: function () {
                console.log('echo 3');
            },
            opened: false
        }
    ];
    const box = document.getElementById('news');
    // храним индекс в массиве открытого элемента
    var currentIndex = -1;
 
    // определяем следующий элемент
    const getNextIndex = function () {
        let index;
        if (currentIndex == -1) {
            index = 0;
 
        } else {
            index = currentIndex + 1;
            if (index >= data.length) {
                index = 0;
            }
        }
        return index;
    }
 
    // Вынес в отдельную функцию специально, именно ее достаточно будет изменить
    // для другого метода работы с контентом (например  шаблон как в приведенном выше решении)
    const replaceContent = function (index) {
        box.innerHTML = data[index].html;
    }
 
    // функция отображения элемента
    // а так же меням флаги открыт/закрыт в массиве для предыдущего и новго текущего элемента
    const drawNext = function () {
        let index = getNextIndex();
        if (index >= 0 && index < data.length) {
            replaceContent(index);
            if (currentIndex !== index) {
                if(currentIndex >= 0) {
                    data[currentIndex].opened = false;
                }
                currentIndex = index;
                data[currentIndex].opened = true;
            }
        }
    }
    // первая инициализация - показываем первый элемент при открытии страницы
    drawNext();
    // вешаем обработчик кликов на сам блок, внутрь которого будем добавлять динамически элементы
    box.addEventListener('click', function (event) {
        // проверям не нажата ли кнопка
        if (event.target.classList.contains('knop')) {
            // вызываем уникальный для элемента функционал
            data[currentIndex].handler();
            // выводим следующий
            drawNext();
        }
        // проверяем не нажата ли ссылка закрытия
        else if (event.target.classList.contains('txt')) {
            box.innerHTML = '';
        }
    });
</script>
1
-13 / 2 / 0
Регистрация: 12.11.2020
Сообщений: 410
22.09.2025, 09:20  [ТС]
Цитата Сообщение от voral Посмотреть сообщение
И далее уже на его основе строить DOM.
Теперь стала понятна Ваша фраза: "Создаем все элементы в соответствии с массивом".

Цитата Сообщение от voral Посмотреть сообщение
Не совсем понятно что должна делать кнопка close
Конкретно сейчас рассматриваю кнопку как переключатель: Добавить в Избранное/ Удалить из. Но действительно возможны и другие варианты.

И самое важно, поэтому поставил его в конец:

Цитата Сообщение от voral Посмотреть сообщение
У вас блоки приходят как массив готовые HTML. Что в реальных проектах не совсем правильно.
Да, Вы совершенно правы, поэтому и привел такую структуру и упомянул, что она формируется на сервере:
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
3055 / 1455 / 264
Регистрация: 16.03.2008
Сообщений: 6,490
Записей в блоге: 2
22.09.2025, 09:49
Цитата Сообщение от 755 Посмотреть сообщение
Почему не совсем правильно? И какие риски? И нужно ли переделывать код?
Разделение ответственностей. У вас выводом все равно управляет JS. Условно: Захотите редизайн сделать - надо будет согласовывать верстку и там и там; потребуется этот список еще где то (в другом "дизайне" и функционале) - придется еще один вариант ответа на AJAX запрос делать. Обернуть данные в теги не такая уж и нагрузка, особенно по сравнению с "достать" их из той же базы . Из возможных мелочей - трафик меньше

Но основная суть моего примера скорее именно в делегировании. Т.е. клик обрабатывается обработчиком родительского блока.

Если про избранное. То тогда тут (если править мой пример) я бы сделал так:

1. в массиве флаг opened заменил на favorite
2. При получении списка в ответ на запрос проверяем, в избранном или нет. И уже с displayData далее работал вместо data (ну или исходный массив менять - тут по задаче)
JavaScript
1
2
3
4
5
let displayData = data.map(function(element) {
    element.favorite = checkFavorite(element); 
// checkFavorit некая функция, которая в соответствии с вашей логикой проверяет наличие элемента в избранном
    return element;
});
3. Кнопку оставить одну. (вот вам и пример, что правильнее было бы такие элементы здесь же и генерить).
4. При клике кнопка должна выполнять действие в соответствии с флагом favorite. (одна и та же кнопка на оба действия - текст кнопки можно менять в соответствтии)
1
 Аватар для voraa
1282 / 1247 / 186
Регистрация: 21.01.2024
Сообщений: 5,748
22.09.2025, 09:49
Цитата Сообщение от 755 Посмотреть сообщение
Почему не совсем правильно? И какие риски, если оставить так? И (или) нужно ли переделывать код?
Желательно, что бы код html был в одном месте.
Если, вдруг, надо поменять дизайн страницы, то править лучше в одном месте, а не в разных местах.
Поэтому обычно либо делают всю страницу на php (или на другом серверном скриптовом языке) и она целиком обрабатывается на сервере и в браузер передается готовый результат. Либо есть страница html, а с сервера в нее по ajax передаются только данные (а не html код), и сама страница уже обрабатывает эти данные и меняет свои элементы.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.09.2025, 09:49
Помогаю со студенческими работами здесь

Замена подстрок
Здравтсвуйте. Подскажите пожалуйста как в тексте заменить один кусок текста на другой, всё должно...

Замена картинки по подстроке
Подскажите пожалуйста, почему не работает !? Надо по наличию слова в подстроке ставить ту или иную...

Чем можно заменить заменить toggle() ?
Добрый день, у меня такой вопрос. Чем можно заменить toggle(function(), function()); В ранних...

Как вставить подстроку в строку напр. с 5-го символа исх. строки?
вопрос в заголовке я думаю всем ясен, не знаю что тут еще добавить

JavaScript!? Работа со строками, вставка подстроки в строку, prototype!?
функция по идее должна вставлять подстроку в строку напр в. каждый 5-ый элемент исходной строки,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
[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-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru