#javascript #html #jquery #css #option
#javascript #HTML #jquery #css #html-выбрать
Вопрос:
Однажды у меня возникла проблема с PHP, и отличный парень решил мою проблему, на этот раз я изучаю JavaScript, и я действительно застрял на проекте.
Вот в чем проблема:https://jsfiddle.net/xasal/8c0kdqm4/5 /
Как вы видите, у меня есть 2 селектора, слева пользователь видит своих персонажей, справа он может выбрать переключение своей «расы», проблема в том, что я хочу, чтобы JavaScript запускал что-то, когда парень выбирает своего персонажа слева для сравнения с правым, и автоматически удалял опцию, если это для той же расы.. Я заставил функции для всех исчезнуть, единственная проблема — это значение сравнения … и когда я думаю, что мой код хорош, у меня возникают проблемы в консоли разработки с неожиданным завершением или синтаксисом
Неперехваченная синтаксическая ошибка: неожиданное завершение ввода
Извините, если для вас это немного просто, я действительно новичок: x
<select id="charSelect" name="charSelection">
<option value="Knight" selected="selected"><span id="charName">Gooffy</span> - <span class="charJob" onclick="detectChanges()">Knight</span> - lv.<span id="charLvl">175</span></option>
<option value="NightShadow"><span>Soul</span> - <span class="charJob" onclick="detectChanges()">NightShadow</span> - lv.<span>175</span></option>
<option value="Rogue"><span>Veli</span> - <span class="charJob" onclick="detectChanges()">Rogue</span> - lv.<span>175</span></option>
</select>
</section>
<input type="submit" value="Change my class to">
<section class="rightSelect">
<select class="jobSelect" name="jobSelection">
<option value="titan" id="titan" class="charJobChange" selected="selected">Titan</option>
<option value="knight" id="knight" class="charJobChange">Knight</option>
<option value="healer" id="healer" class="charJobChange">Healer</option>
<option value="mage" id="mage" class="charJobChange">Mage</option>
<option value="rogue" id="rogue" class="charJobChange">Rogue</option>
<option value="sorcerer" id="sorcerer" class="charJobChange">Sorcerer</option>
<option value="nightshadow" id="nightshadow" class="charJobChange">NightShadow</option>
</select>
function removeNS() { // example with Hide NS = nightshadow
$('#nightshadow').hide();
console.log("loaded");
}
function selectedCh(){
if($("#leftSelect select").find("option:selected").val() == "NightShadow") {
removeNS();
}
selectedCh();
Комментарии:
1. Добро пожаловать в stackoverflow, Антон. Это хороший первый вопрос. Не забудьте принять ответ, если он показался вам полезным. Приветствия.
2. @r3wt Огромное вам спасибо за ваши приветствия! 😀
Ответ №1:
Попробуйте это вместо этого.
Я вызвал функцию в onchange="selectedCh()"
левом окне выбора.
function selectedCh(){
// to get selected option in left select box in lowercase
var selectedtitem = $(".leftSelect select").find("option:selected").val().toLowerCase();
// to get total number of options in right select box
var oplen = $(".rightSelect select option").length;
// enable all option in right select box
$(".rightSelect select option").show();
// Loop for checking the selected option equals to any option in right select box
for(i=1;i<=oplen;i ){
if($(".rightSelect select option:nth-child(" i ")").val() == selectedtitem){
// to hide if equals in right select box option
$(".rightSelect select option:nth-child(" i ")").hide();
}
}
}
// to check first run the code
selectedCh();
Рабочая демонстрация
function selectedCh(){
var selectedtitem = $(".leftSelect select").find("option:selected").val().toLowerCase();
var oplen = $(".rightSelect select option").length;
$(".rightSelect select option").show();
for(i=1;i<=oplen;i ){
if($(".rightSelect select option:nth-child(" i ")").val() == selectedtitem){
$(".rightSelect select option:nth-child(" i ")").hide();
}
}
}
selectedCh();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section class="leftSelect">
<select id="charSelect" name="charSelection" onchange="selectedCh()">
<option value="Knight" selected="selected"><span id="charName">Gooffy</span> - <span class="charJob" onclick="detectChanges()">Knight</span> - lv.<span id="charLvl">175</span></option>
<option value="NightShadow"><span>Soul</span> - <span class="charJob">NightShadow</span> - lv.<span>175</span></option>
<option value="Rogue"><span>Veli</span> - <span class="charJob" >Rogue</span> - lv.<span>175</span></option>
</select>
</section>
<section class="rightSelect">
<select class="jobSelect" name="jobSelection">
<option value="titan" id="titan" class="charJobChange" selected="selected">Titan</option>
<option value="knight" id="knight" class="charJobChange">Knight</option>
<option value="healer" id="healer" class="charJobChange">Healer</option>
<option value="mage" id="mage" class="charJobChange">Mage</option>
<option value="rogue" id="rogue" class="charJobChange">Rogue</option>
<option value="sorcerer" id="sorcerer" class="charJobChange">Sorcerer</option>
<option value="nightshadow" id="nightshadow" class="charJobChange">NightShadow</option>
</select>
</section>
Комментарии:
1. Я добавляю все описания в коде одно за другим. если есть какие-либо сомнения, прокомментируйте меня.
2. Боже, ты действительно очень благодарен за ваши комментарии к вашему коду, он имеет для меня огромную ценность, спасибо вам за ваши усилия, кстати, он работает отлично!
3. итак (» i «) = любая строка внутри параметра:n-й дочерний элемент? 🙂
4. Да, он получает значение i от 1 до длины опций. вот и все, получите все параметры.
Ответ №2:
Скрыть параметр, если значение == ‘вариант 3’
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="selectName">
<option value="option 1">Option 1</option>
<option value="option 2">Option 2</option>
<option value="option 3">Option 3 (hide on chnage)</option>
<option value="option 4">Option 4</option>
<option value="option 5">Option 5</option>
</select>
<script>
$('#selectName').on('change', function () {
if ($(this).val() == 'option 3') {
$('option[value="option 3"]',this).hide();
} else {
$('option[value="option 3"]',this).show();
}
}).trigger('change');;
</script>
Комментарии:
1. интересно! спасибо вам за это, это не совсем то, что я хочу, но это может помочь мне в будущих попытках, lol!! спасибо за ваш потрясающий ответ 🙂
Ответ №3:
Просто используйте селектор запросов для поиска соответствующего параметра и скройте его. Вот минимальный пример:
var charSelect = document.querySelector('select[name="charSelection"]');
var jobSelect = document.querySelector('select[name="jobSelection"]');
charSelect.addEventListener('change', function(){
// Unhide any hidden options
jobSelect.querySelectorAll('option').forEach(opt=>opt.style.display = null);
// Hide the option that matches the above selected one
var value = this.value.toLowerCase();
jobSelect.querySelector(`option[value="${value}"]`).style.display = "none";
});
<select name="charSelection">
<option value="Knight" selected="selected">Knight</option>
<option value="NightShadow">NightShadow</option>
<option value="Rogue">Rogue</option>
</select>
<select name="jobSelection">
<option value="titan" selected="selected">Titan</option>
<option value="knight">Knight</option>
<option value="healer">Healer</option>
<option value="mage">Mage</option>
<option value="rogue">Rogue</option>
<option value="sorcerer">Sorcerer</option>
<option value="nightshadow">NightShadow</option>
</select>
Комментарии:
1. Спасибо за ваш ответ, это работает действительно хорошо, единственная проблема в том, что при загрузке страницы и предварительном выборе (selected =»выбранный) Gooffy the knight пользователь может видеть рыцаря, но всякий раз, когда вы переключаете, все в порядке :)) я многому научился сегодня, спасибо за вашу помощь !