#javascript #html
#javascript #HTML
Вопрос:
На моей веб-странице есть функция вкладок, содержащая 3 вкладки. При загрузке страницы я хочу, чтобы первая вкладка и связанное с ней содержимое были в фокусе и оформлены так, как если бы пользователь выбрал их.
HTML-«фрагмент» для вкладок управляется в CMS > CKEditor WYSIWYG. Я могу добавить исходный код в этот редактор, включая JS, но я не могу редактировать исходный код базовой страницы (это то, что есть).
Код JS tabs — это вызов в Head.
Код работает как отдельная страница, т. Е. при загрузке страница отображается с первой вкладкой и ее содержимым в фокусе. Однако при рендеринге через CMS отображаются три вкладки, ни одна из которых (и содержимое) не находится в фокусе. Вкладки работают, когда пользователь взаимодействует с интерфейсом.
html-код:
<li class="tablinks" id="defaultOpen" onclick="switchView('economicSustainability'); myFunctionEconomic(); openTab(event, 'tab1')">One</li>
<li class="tablinks" onclick="switchView('customerFocus'); myFunctionCustomer(); openTab(event, 'tab2')">Two</li>
<li class="tablinks" onclick="switchView('customerFocus'); myFunctionSource(); openTab(event, 'tab3')">Three</li>
<div id="tab1" class="tabcontent">
<div id="economicDiv">Content here</div>
</div>
<div id="tab2" class="tabcontent">
<div id="customerDiv">Content here</div>
</div>
<div id="tab3" class="tabcontent">
<div id="sourceDiv">Content here</div>
</div>
Код JS:
function openTab(evt, tabName) {
var i, tabcontent, tablinks;
tabcontent = document.getElementsByClassName("tabcontent");
for (i = 0; i < tabcontent.length; i ) {
tabcontent[i].style.display = "none";
}
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < tablinks.length; i ) {
tablinks[i].className = tablinks[i].className.replace(" active", "");
}
document.getElementById(tabName).style.display = "block";
evt.currentTarget.className = " active";
}
// Get the element with id="defaultOpen" and click on it
document.getElementById("defaultOpen").click();
Я был бы благодарен за любую помощь, которая может быть получена из приведенного выше. Мое спасибо! Ник
(редактировать: я только что узнал, что при необходимости я могу обновить код JS tabs)
Комментарии:
1. возможно, захочется перенести ваш щелчок defaultopen в значение settimeout,0, чтобы переместить его в конец стека, убедитесь, что он выполняется после рендеринга
2. спасибо @tik27, боюсь, я не понимаю, что это значит. Можете ли вы привести пример?
3. Можете ли вы или кто-либо другой 🙂 подсказать, как я мог бы достичь результата, который я ищу? Я пытался добавить запись setTimeout, но у меня это не работает. Спасибо
4. Спасибо @ tik27, все сработало так, как вы предложили. setTimeout был первым