Загрузочный аккордеон с петлей для начала

#javascript #php #twitter-bootstrap #typo3

#язык JavaScript #php #твиттер-загрузчик #опечатка3

Вопрос:

моя первоначальная проблема заключалась в том, что все мои аккордеоны открывались одновременно, но я понимал, что это исходило от идентификатора, который все время был одним и тем же.

Поэтому я попытался сделать свой идентификатор динамичным, но это не решило мою проблему. не могли бы вы предложить решение, пожалуйста? Спасибо

вот мой код:

 lt;div class="accordion mb-5" id="accordion-infos"gt;  lt;f:for each="{field.container}" as="container"gt;   lt;!-- foreach bouton contenu --gt;  lt;div class="card"gt;  lt;div class="card-header" id="heading1-{container.buttoncontent}"gt;  lt;h2gt;  lt;button class="accordion-button btn btn-link btn-block text-left"   type="button"   data-bs-toggle="collapse"   data-bs-target="#collapseOne-{container.buttoncontent}"   aria-expanded="true"   aria-controls="collapseOne-{container.buttoncontent}"gt;  {container.buttoncontent}  lt;/buttongt;  lt;/h2gt;  lt;/divgt;  lt;div id="collapseOne-{container.buttoncontent}"   class="accordion-collapse collapse"   aria-labelledby="heading1-{container.buttoncontent}"   data-bs-parent="#accordion-infos"gt;  lt;div class="card-body"gt;  lt;div class="section-card"gt;  lt;div class="row"gt;  lt;div class="col-lg-6 col-md-6"gt;  lt;f:format.rawgt;{container.content}lt;/f:format.rawgt;  lt;/divgt;lt;!-- col-lg-6 col-md-6--gt;  lt;/divgt;lt;!-- row--gt;  lt;/divgt;lt;!-- section card --gt;  lt;/divgt; lt;!-- card body --gt;  lt;/divgt; lt;!-- collapsOne --gt;  lt;/divgt; lt;!-- card --gt;  lt;/f:forgt;lt;!-- endfor bouton contenu--gt; lt;/divgt;lt;!-- accordion mb-5 --gt;  

Комментарии:

1. «Поэтому я попытался сделать свой идентификатор динамичным, но это не решило мою проблему». — почему / как нет? Мы не знаем, какие данные вы на самом деле вводите в показанный шаблон, так как мы должны знать, какой результат это на самом деле дало сейчас?

2. «Поэтому я попытался сделать свой идентификатор динамичным, но это не решило мою проблему». я имел в виду, что мой аккордеон больше не открывался, когда я добавлял динамический контент в свой идентификатор, я хотел добавить в свой идентификатор имя кнопки моего аккордеона

3. Итак, как выглядит сгенерированный HTML-источник? Все идентификаторы там установлены так, как вы думали, что они должны быть?

4. «Я хотел добавить в свой идентификатор имя моей кнопки аккордеона» — и как выглядят эти имена? Являются ли они на самом деле значениями, которые при наличии префикса something- все равно приводят к допустимому значению идентификатора в HTML?

5. Когда я просматриваю HTML с помощью идентификатора динамики, я получаю, что » lt;div id=»collapseOne-vie pratique» класс=»аккордеон-коллапс коллапс» aria-labelledby=»heading1-vie pratique» данные-bs-родитель=»#аккордеон-информация»gt; » Таким образом, я правильно получаю свои значения, но мой аккордеон не работает

Ответ №1:

использование любого редактируемого текста в качестве идентификатора с ограничениями в целом является плохой идеей. для аккордеонов или аналогичной конструкции вы всегда должны использовать uid from TYPO3. Или, по крайней мере iterator.index , петли.

Поскольку у вас может быть несколько аккордеонов на одной странице, вам следует объединить их.

таким образом, ваш идентификатор должен состоять uid из контейнера и uid s содержащихся в нем элементов.
Что-то вроде: id="container-{data.uid}-{element.uid}"
или

 lt;f:for each="{field.container}" as="container" iteration="iterator"gt;  :  lt;div class="card-header" id="container-{data.uid}-{iterator.index}"`gt;  :  lt;div id="collapseOne-{data.uid}-{iterator.index}" ...  :