#javascript #jquery #forms #selector
#javascript #jquery #формы #селектор
Вопрос:
Как я могу преобразовать следующий код jQuery в рабочий код JavaScript?
jQuery
$('select :visible:selected').each(function(i) {
// instructions
}
Видимый селектор я уже реализовал с помощью JS. Или есть лучшее решение?
JavaScript
for (var i=0;i<$('select').length;i ) {
if ($('select')[i].style.visibility == "visible") {
// instructions
}
}
Спасибо за вашу помощь!
Комментарии:
1. И вы все еще используете jQuery в части «javascript»
2. Хорошо, но мне это нужно, как и второй код, который я опубликовал. Первый не работает в моем случае.
Ответ №1:
Выбранный принимает выбранный ВАРИАНТ из списка ВЫБОРА. Итак, чтобы получить все выбранные параметры из всех видимых выборок со страницы с помощью чистого JavaScript
var selects = document.getElementsByTagName('select');
for(var i=0; i<selects.length; i ) {
var select = selects[i];
if(select.style.visibility == 'visible'){
for(var j=0; j<select.options.length; j ) {
if(select.options[j].selected){
// ... your code goes here ..
}
}
}
}
ОБНОВЛЕНИЕ Итак, если я правильно вас понял, вам нужны все выбранные ПАРАМЕТРЫ из ВСЕХ видимых выборок, и вы МОЖЕТЕ использовать jQuery
$('select:visible option:selected').each(function(i,elm) {
// instructions
alert(elm.value);
});
Ответ №2:
IQuery — это javascript, поэтому «код jQuery» — это рабочий код JavaScript.
кроме того, тот факт, что вы используете в своем втором примере тоже ( $('select')
), заставляет меня задуматься, почему вы просто не используете свой первый.
если вы не хотите использовать jQuery и вместо этого придерживаетесь «простого» javascript, он должен выглядеть так:
var elements = document.getElementsByTagName('select');
for (var i=0;i<elements.length;i ) {
var element = elements[i];
// use:
element.style.visibility // to check for visibility
element.selectedIndex // to check if/what option is selected (-1 = no selection)
// a 'select' doesn't have a 'selected' property
// because it's the <option> that gets selected
// so we end up:
if (element.style.visibility == "visible" amp;amp; element.selectedIndex >= 0) {
// instructions
}
}
дополнительная информация о selectedindex и selected
Комментарии:
1. on
<select multiple>
SelectedIndex возвращает идентификатор первого выбранного параметра — для этого решения этого достаточно, потому что мы хотим только проверить, выбран ли какой- либо параметр, и нам не нужно знать, какой именно. я не вижу проблемы2. OP не спрашивал, как найти первый выбранный или был выбран один из многих. Он перебирает их все, следовательно, он ищет их все, следовательно, ваше решение не будет работать для него.
3. мой код также не находит «только первый выбранный». он делает именно то, что делает jquery-example: находит все
select
элементы, у которых есть выбор (независимо от того, является ли это множественным выбором с одним или несколькими выбранными параметрами или одиночным выбором с выбором). ни один из кодов (не мой и не пример jquery) не ищет параметры, речь идет только оselect
s и о том, есть ли у них выбор или нет.