Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вставить цитату (https://javascript.ru/forum/misc/82027-vstavit-citatu.html)

рони 03.03.2021 23:01

Ubivectel,
<?php endforeach; ?>
</table>

<table width="100%" border="1" class="castom_history">.php..</table> это убрать
<script>
document.querySelectorAll(".castom_history td").forEach(td => {
let html = td.innerHTML;
let reg = /\[QUOTE\](.+)\[\/QUOTE\]/;
while (reg.test(html)) {

html = html.replace(reg, `<span class="KIDE_quote">$1</span>`)
}
td.innerHTML = html;
})

сюда надо перенести </script>


<div align="center" style="font-size: 24px;margin: 10px 0px 0px 0px; font-family: 'Jura', sans-serif; text-shadow: 1px 1px 1px white;"><?php echo $this->pags; ?></div>

<div style="font-family: Zrnic Cyr Normal;
font-size: 20px; padding: 10px 0 10px 0"><a class="vchat" href="/<?php echo JRoute::_(KIDE_URL."&view=kide"); ?>"><?php echo JText::_("COM_KIDE_VOLVER"); ?></a></div>
</script>

Ubivectel 04.03.2021 07:57

Цитата:

Сообщение от рони (Сообщение 534297)
Ubivectel,


<table width="100%" border="1" class="castom_history">.php..</table> это убрать

Так это ж полностью грохнуть таблицы хистори?

рони 04.03.2021 08:04

Ubivectel,
с добрым утром! ничего не трогай, ты уже убрал всё что нужно!!! :nono:

Ubivectel 04.03.2021 08:13

Ага, приветик :victory: , фуф, вздохнул спокойно, сегодня на денек хочу моск на отдых )

рони 04.03.2021 08:16

Цитата:

Сообщение от Ubivectel
сегодня на денек хочу моск на отдых )

а ютуб? :lol: :lol: :lol:

Ubivectel 04.03.2021 08:17

Типа того, и самые дебильные ролики смотреть)))))))))))

Ubivectel 14.08.2021 10:37

Пириуэт.

Таки работает код на отлично, но одна проблемка есть. При ответе на сообщение с цитатой, код хватает цитату тоже, соответственно при ответе на это сообщение, цитата содержит уже кучу лишнего текста. Короче при нескольких ответов подряд получается дикое нагромождение из сообщений.

Если я правильно понимаю, нужно научить этот скрипт:

document.addEventListener("click", ({ target }) => {
    if (target = target.closest('.KIDE_msg_hour')) {
        target = target.closest('.KIDE_msg_top')
        let text = target.textContent;
        kide.insertSmile(text)
    }
});


При цитировании

<span style="color:#ff0000" class="KIDE_msg">  <span class="KIDE_quote">цитата</span><br>текст сообщения</span>


Игнорировать содержание тега span с классом "KIDE_quote"

:help:

voraa 14.08.2021 10:57

Так можно

document.addEventListener("click", ({ target }) => {
    if (target = target.closest('.KIDE_msg_hour')) {
        target = target.closest('.KIDE_msg_top')
        let clon = target.cloneNode(true); // Делаем копию узла с потомками
        clon.querySelectorAll(".KIDE_quote").forEach(el => el.remove()); // Удаляем из копии все span.KIDE_msg
        let text = clon.textContent; // Берем текст из клона
        kide.insertSmile(text)
    }
});

voraa 14.08.2021 11:10

Для цитат лучше использовать семантические элементы <q> или <blockquote>

Ubivectel 14.08.2021 12:06

Все заработало как надо, спасибо!

Цитата:

Сообщение от voraa
Для цитат лучше использовать семантические элементы <q> или <blockquote>

В смысле теги?

document.addEventListener("click", ({ target }) => {
if (target = target.closest('.qutes')) {
target = target.closest('.KIDE_msg_top')
let clon = target.cloneNode(true); // Делаем копию узла с потомками
clon.querySelectorAll(".KIDE_quote").forEach(el => el.remove()); // Удаляем из копии все span.KIDE_msg
let text = clon.textContent; // Берем текст из клона
kide.insertSmile(`
Цитата:

${text}
\n`);
}
});

Вот так оно сейчас. И все работает шЕкарно )))


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