Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Нужна помощь новичку, помогите плз (https://javascript.ru/forum/events/83070-nuzhna-pomoshh-novichku-pomogite-plz.html)

Lexx 08.09.2021 15:56

Можно еще вопрос? :)
Когда делаю вложенность все работает
Test().p(
Test().span('test').span('span')
).toString()


Но как сделать защиту или замену запятой на + при вводе
Test().p(
Test().span('test'),
Test().span('span')
).toString()

при таком варианте выводит только первый span и корректно заrрывает </p>
была бы переменная, я сделал бы через .replace, а тут хз как быть
Можно просто подсказать куда копать :) Большое спасибо

рони 08.09.2021 16:05

Lexx,
Test().p что это?

Lexx 08.09.2021 16:14

Цитата:

Сообщение от рони (Сообщение 540106)
Lexx,
Test().p что это?

это я разнес, целиком выглядит так
Test().p(Test().span('test'),Test().span('span')).toString()


По сути на выходе должно быть так "<p><span>test</span><span>span</span></p>"

Но так получается или с + вместо запятой или если убрать это объявление
Test().p(Test().span('test'),Test().span('span')).toString()

Lexx 08.09.2021 16:16

Вот не могу понять как убрать лишний ,Test() или как-то заменить запятую на +

рони 08.09.2021 17:12

Lexx,
<body>
    <script>
        function Templater() {
            let str = '';
            let tags = {
                getFullName(tagSpan, up = '') {
                    return tagSpan.length ? tagSpan.map(a => `${a}${up}`).join(' ') : '';
                },
                span(...tagSpan) {
                    str += `<span>${this.getFullName(tagSpan, '!!!')}</span>`
                    return this;
                },
                p(...tagSpan) {
                    str += `<p>${this.getFullName(tagSpan)}</p>`
                    return this;
                },
                toString() {
                    return str
                }
            };
            return tags;
        }
        const template = Templater().p(
            Templater().span('Hello'),
            Templater().span('World')
        )
        document.body.append(template);
        const temp = Templater().p(
            Templater().span('test').span('span')
        ).toString();
        document.write('<br>')
        document.body.append(temp);
    </script>
</body>

Lexx 08.09.2021 17:20

спасибо, буду разбирать что да как


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