У меня есть раскрывающийся список со значениями. У меня есть массив массивов со списком значений, которые будут соответствовать выпадающим значениям. Если значение текстовой опции раскрывающегося списка существует в массиве, оно не должно отображаться в раскрывающемся списке как опция. Я застрял на подходе, который я должен использовать. Это то, что у меня есть до сих пор.
HTML
Car Plates:
<select title='car/id' id='car_x0020_Plate_x002f'>
<option selected = "selected" value = "0">none</option>
<option value = "16">233-jj2</option>
<option value = "10">934-zxy</option>
<option value = "90">330-nbh</option>
<option value = "11">930-orj</option>
</select>
JavaScript
var hideOption = ['233-jj2', '330-nbh']
var e = document.querySelector([id^='car']);
var strUser = e.value;
var e = document.getElementById("ddlViewBy");
var strUser = e.options[e.selectedIndex].text;
for (var x=0; x<hideOption.length; x++){
if (hideOption[x] === strUser){
//remove from dropdown
}
}
var hideOption = ['233-jj2', '330-nbh']
var e = document.querySelector("[id^='car']");
var selTextArr = Array.from(e.options).map(option => option.text)
for (var x=0; x<selTextArr.length; x++){
if (hideOption.includes(selTextArr[x])){
e.remove(x)
}
}
Car Plates:
<select title='car/id' id='car_x0020_Plate_x002f'>
<option selected = "selected" value = "0">none</option>
<option value = "16">233-jj2</option>
<option value = "10">934-zxy</option>
<option value = "90">330-nbh</option>
<option value = "11">930-orj</option>
</select>
// удалить из выпадающего списка используйте этот код, чтобы удалить из выпадающего списка e.removeChild (e.options [e.selectedIndex])
вы также можете использовать это e.selectedOptions[0].remove()
var options = document.querySelector("[id^='car']").children;
var hideOption = ['233-jj2', '330-nbh']
for (var i = 0; i < options.length; i++){
if (hideOption.indexOf(options[i].text) > -1){
options[i].remove();
}
}
Я сделал вашу идею очень простым способом, если у вас есть какие-либо вопросы, пожалуйста, сообщите мне
var hideOption = ['233-jj2', '330-nbh'],
select = document.getElementById("select");
for (let i = 0; i < hideOption.length; i = i + 1) {
for (let t = 1; t < select.options.length; t = t + 1) {
if (hideOption[i] == select.options[t].textContent) {
select.options[t].remove();
}
}
}
Car Plates:
<select title='car/id' id='select'>
<option selected = "selected" value = "0">none</option>
<option value = "16">233-jj2</option>
<option value = "10">934-zxy</option>
<option value = "90">330-nbh</option>
<option value = "11">930-orj</option>
</select>
К сожалению, мой идентификатор будет иметь причудливое имя id='car_x0020_Plate_x002f'. Он генерируется. Как я могу заставить ваше решение работать с этим?
вы можете изменить мой идентификатор на свой идентификатор, изменить выбор на car_x0020_Plate_x002f или вы можете работать с именем класса вместо идентификатора: поместите этот код в javascript select = document.getElementsByClassName("yourselectclassname")[0]; вместо select = document.getElementById("select"); yourselectclassname этот класс дает его для выбора в html <select class = "yourselectclassname" > ... Если у вас есть какие-либо вопросы, просто скажите мне, например, если вам нужен другой метод, и вы хотите работать только с идентификатором.
Я дам вам другой метод, если вы не можете добавить класс в свой выбор, и только вы хотите работать с идентификатором
Добавьте этот код вверху кода JavaScript var selectall = document.querySelectorAll('select');
var select;
for (var i = 0; i < selectall.length; i = i + 1) { if (selectall[i].getAttribute("id") != undefined) { if (selectall[i].getAttribute("id").indexOf("car") != -1) { select = selectall[i]; перерыв; } } } ``` // удалить это: select = document.getElementById("select"); Тогда весь ваш код будет работать нормально, если у вас есть какие-либо вопросы, спросите меня, у всего есть решение.
У меня проблема с написанием кода в комментарии, это некрасиво, если есть другой способ, который вы знаете, чтобы дать вам код, просто скажите мне сделать это, просто прочитайте сначала то, что я вам сказал, если это то, что вы хотите, я поставлю новый ответ и включу в него все.
Не уверен, что это ваша проблема, но у вас опечатка:
lenght