#javascript #html #jquery
#javascript #HTML #jquery
Вопрос:
Я использую простую функцию вкладок, связанную с событием изменения в списке выбора.
Это работает, когда я выбираю опцию из списка. Так что это не проблема.
Но когда страница загружается впервые, я хочу увидеть вкладку по умолчанию (выбранную). На данный момент это выбранный элемент Friet. Как я могу это исправить, потому что я не знаю как.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="dds" id="categories" onchange="getelementfromdropdown()">
<option value="Friet" selected>Friet</option>
<option value="Vegetarisch">Vegetarisch</option>
<option value="Snacks">Snacks</option>
<option value="Broodjes">Broodjes</option>
<option value="Kapsalon">Kapsalon</option>
<option value="Schotels">Schotels</option>
<option value="Menus">Menu's</option>
<option value="Diversen">Diversen amp; (fris)drank</option>
</select>
<div id="Friet" class="tabcontent"></div>
<script language="javascript">
$(document).ready(function () {
$("#categories").change(function () {
getelementfromdropdown();
});
});
function getelementfromdropdown() {
var value = $("#categories").val();
openTab(event, value);
};
function openTab(evt, Name) {
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(Name).style.display = "block";
evt.currentTarget.className = " active";
}
</script>
Например, только что добавлена 1 вкладка div .. остальные также доступны. 🙂
Может, кто-нибудь мне поможет.. Я пытался исправить это почти час и не могу найти решение.
Ответ №1:
У вас очень устаревший код, и вы делаете это намного сложнее, чем нужно. Подробности см. В комментариях.
/* Work with classes, not inline styles */
.hidden { display:none; }
.active { border:1px solid red; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- If an <option> doesn't specify a value, then its value becomes its text -->
<!-- You had an onchange event attribute here. Don't do that, it's not 1998! -->
<select class="dds" id="categories">
<option selected>Friet</option>
<option>Vegetarisch</option>
<option>Snacks</option>
<option>Broodjes</option>
<option>Kapsalon</option>
<option>Schotels</option>
<option value="Menus">Menu's</option>
<option value="Diversen">Diversen amp; (fris)drank</option>
</select>
<!-- All tabs start out hidden and not active -->
<div id="Friet" class="tabcontent hidden">Friet</div>
<div id="Vegetarisch" class="tabcontent hidden">Vegetarisch</div>
<div id="Snacks" class="tabcontent hidden">Snacks</div>
<div id="Broodjes" class="tabcontent hidden">Broodjes</div>
<div id="Kapsalon" class="tabcontent hidden">Kapsalon</div>
<div id="Schotels" class="tabcontent hidden">Schotels</div>
<div id="Menus" class="tabcontent hidden">Menus</div>
<div id="Diversen" class="tabcontent hidden">Diversen</div>
<!-- language="javascript" hasn't been needed for almost 10 years -->
<script>
// If you place your <script> just before the closing "body" tag,
// then there's no need to place code inside of document.ready().
// The following code will just run as soon as the DOM is ready.
// Show the selected option upon page load and make it active
// by just finding the element who's id is the currently selected
// value in the <select>
$("#" $("#categories").val()).show().addClass("active");
// No need to have a function that only calls another one
$("#categories").change(function (event){
$(".tabcontent").hide().removeClass("active"); // Hide all the tabs and remove any active tab
$("#" $(this).val()).show().addClass("active"); // Show the selected tab and make it active
});
</script>
Комментарии:
1. о, это выглядит намного лучше.. я запутался, я понимаю, что я сделал не так. Больше никогда не повторится 🙂 Спасибо
2. @PurpleHaxe Добро пожаловать. Не забудьте проголосовать и отметить как «ответ», щелкнув галочку и стрелку вверх в левом верхнем углу ответа.
3. Это работает! Я использовал 2 разные версии jquery. Теперь это исправлено.
Ответ №2:
Инициируйте событие изменения в вашем categories
списке выбора при готовности документа:
$(document).ready(function(){
$('#categories').trigger('change');
});