Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.06.2016, 11:57
Новичок на форуме
Отправить личное сообщение для u4enik12 Посмотреть профиль Найти все сообщения от u4enik12
 
Регистрация: 14.02.2016
Сообщений: 6

2 Select зависимы друг от друга
Здравствуйте форумчани помогите пожалуйста, задача заключается в том у меня есть 2 select там написано годы надо сделать так что бы когда выбираешь 1 select то 2 select должен стать равным зависимо от 1 select но не меньше и все элементы 2 select которые меньше 1 select удалились.
Ответить с цитированием
  #2 (permalink)  
Старый 12.06.2016, 12:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

u4enik12,
и в чём проблема проверить циклом все option втрого селекта по onchange в первом?
Ответить с цитированием
  #3 (permalink)  
Старый 12.06.2016, 13:24
Аватар для pureJS
Аспирант
Отправить личное сообщение для pureJS Посмотреть профиль Найти все сообщения от pureJS
 
Регистрация: 04.06.2016
Сообщений: 70

Сообщение от u4enik12 Посмотреть сообщение
Здравствуйте форумчани помогите пожалуйста, задача заключается в том у меня есть 2 select там написано годы надо сделать так что бы когда выбираешь 1 select то 2 select должен стать равным зависимо от 1 select но не меньше и все элементы 2 select которые меньше 1 select удалились.

u4enik12, пожалуйста, используй знаки препинания (запятая и точка), а также начинай новые предложения с большой буквы, иначе очень плохо понятно что ты хочешь сделать.

Для большей понятности напиши сюда свой код с объяснениями в каких местах тебе непонятно.
Ответить с цитированием
  #4 (permalink)  
Старый 12.06.2016, 17:06
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

<body>
    <select id="s1">
      <option value="2001">2001</option>
      <option value="2002">2002</option>
      <option value="2003">2003</option>
      <option value="2004">2004</option>
      <option value="2005">2005</option>
      <option value="2006">2006</option>
      <option value="2007">2007</option>
      <option value="2008">2008</option>
      <option value="2009">2009</option>
      <option value="20010">20010</option>
      <option value="20011">20011</option>
      <option value="20012">20012</option>
      <option value="20013">20013</option>
      <option value="20014">20014</option>
      <option value="20015">20015</option>
      <option value="20016">20016</option>
      <option value="20017">20017</option>
      <option value="20018">20018</option>
      <option value="20019">20019</option>
      <option value="20020">20020</option>
    </select>
    <select id="s2">
      <option value="2001">2001</option>
      <option value="2002">2002</option>
      <option value="2003">2003</option>
      <option value="2004">2004</option>
      <option value="2005">2005</option>
      <option value="2006">2006</option>
      <option value="2007">2007</option>
      <option value="2008">2008</option>
      <option value="2009">2009</option>
      <option value="20010">20010</option>
      <option value="20011">20011</option>
      <option value="20012">20012</option>
      <option value="20013">20013</option>
      <option value="20014">20014</option>
      <option value="20015">20015</option>
      <option value="20016">20016</option>
      <option value="20017">20017</option>
      <option value="20018">20018</option>
      <option value="20019">20019</option>
      <option value="20020">20020</option>
    </select>
    <script>
       var s1 = document.getElementById('s1'),
    s2 = document.getElementById('s2');

    s1.onchange = function () {
      s2.value = s1.value;
      for (var i = s2.selectedIndex - 1; i >= 0; i--) {
      s2.options.remove(i);
      }
    }
    </script>
</body>
Ответить с цитированием
  #5 (permalink)  
Старый 12.06.2016, 17:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

EmperioAf,
нельзя выбрать дважды
Ответить с цитированием
  #6 (permalink)  
Старый 12.06.2016, 17:26
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

Сообщение от рони Посмотреть сообщение
EmperioAf,
нельзя выбрать дважды
нельзя; но ведь автор об этом не писал. Всегда можно перезагрузить html-страницу
Ответить с цитированием
  #7 (permalink)  
Старый 12.06.2016, 20:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070


<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
    <select>
    <option value="2000">2000</option>
    <option value="2001">2001</option>
    <option value="2002">2002</option>
    <option value="2003">2003</option>
    <option value="2004">2004</option>
    <option value="2005">2005</option>
    <option value="2006">2006</option>
    <option value="2007">2007</option>
    <option value="2008">2008</option>
    <option value="2009">2009</option>
    <option value="2010">2010</option>
    <option value="2011">2011</option>
    <option value="2012">2012</option>
    <option value="2013">2013</option>
    <option value="2014">2014</option>
    <option value="2015">2015</option>
    <option value="2016">2016</option>
    <option value="2017">2017</option>
    <option value="2018">2018</option>
    <option value="2019">2019</option>
    <option value="2020">2020</option>
    </select>
    <select>
    <option value="2000">2000</option>
    <option value="2001">2001</option>
    <option value="2002">2002</option>
    <option value="2003">2003</option>
    <option value="2004">2004</option>
    <option value="2005">2005</option>
    <option value="2006">2006</option>
    <option value="2007">2007</option>
    <option value="2008">2008</option>
    <option value="2009">2009</option>
    <option value="2010">2010</option>
    <option value="2011">2011</option>
    <option value="2012">2012</option>
    <option value="2013">2013</option>
    <option value="2014">2014</option>
    <option value="2015">2015</option>
    <option value="2016">2016</option>
    <option value="2017">2017</option>
    <option value="2018">2018</option>
    <option value="2019">2019</option>
    <option value="2020">2020</option>
    </select>

<script>
window.addEventListener("DOMContentLoaded", function() {
    var a = document.querySelectorAll("select"),
        e = a[1].options,
        c = a[1].querySelectorAll("option");
    a[0].addEventListener("change", function() {
        for (var f = a[1].value, d = +this.value, b = e.length = 0; b < c.length; b++) + c[b].value >= +d && e.add(c[b], -1);
        a[1].value = f > d ? f : d
    })
});
</script>
</body>


</html>
Ответить с цитированием
  #8 (permalink)  
Старый 12.06.2016, 23:14
hhh hhh вне форума
Профессор
Отправить личное сообщение для hhh Посмотреть профиль Найти все сообщения от hhh
 
Регистрация: 19.11.2013
Сообщений: 150

<select id="test">
  <option>Гек</option>
  <option>Том</option>
  <option>Сид</option>
  <option>Джим</option>
</select>
<select>
  <option>Гек</option>
  <option>Том</option>
  <option>Сид</option>
  <option>Джим</option>
</select>
<script>

var selectColletion = document.querySelectorAll('select'),
    firstSelect = selectColletion[0],
    lastSelect = selectColletion[1];

    firstSelect.onchange = function() {
      if (this.selectedIndex >= lastSelect.selectedIndex) {
        lastSelect.value = this.value;

        for (var i = 0; i < lastSelect.selectedIndex; i++) {
          lastSelect.options[i].style.display = "none";
        }
      } else {
        lastSelect.value = this.value;
        for (var i = 0; i < lastSelect.length; i++) {
          if (i < lastSelect.selectedIndex) continue;
          lastSelect.options[i].style.display = "block";
        }

      }

    };

</script>
Ответить с цитированием
  #9 (permalink)  
Старый 13.06.2016, 10:40
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Вариант.

<select>
	<option value="2000">2000</option>
	<option value="2001">2001</option>
	<option value="2002">2002</option>
	<option value="2003">2003</option>
	<option value="2004">2004</option>
	<option value="2005">2005</option>
	<option value="2006">2006</option>
	<option value="2007">2007</option>
	<option value="2008">2008</option>
	<option value="2009">2009</option>
	<option value="2010">2010</option>
	<option value="2011">2011</option>
	<option value="2012">2012</option>
	<option value="2013">2013</option>
	<option value="2014">2014</option>
	<option value="2015">2015</option>
	<option value="2016">2016</option>
	<option value="2017">2017</option>
	<option value="2018">2018</option>
	<option value="2019">2019</option>
	<option value="2020">2020</option>
</select>
<select>
	<option value="2000">2000</option>
	<option value="2001">2001</option>
	<option value="2002">2002</option>
	<option value="2003">2003</option>
	<option value="2004">2004</option>
	<option value="2005">2005</option>
	<option value="2006">2006</option>
	<option value="2007">2007</option>
	<option value="2008">2008</option>
	<option value="2009">2009</option>
	<option value="2010">2010</option>
	<option value="2011">2011</option>
	<option value="2012">2012</option>
	<option value="2013">2013</option>
	<option value="2014">2014</option>
	<option value="2015">2015</option>
	<option value="2016">2016</option>
	<option value="2017">2017</option>
	<option value="2018">2018</option>
	<option value="2019">2019</option>
	<option value="2020">2020</option>
</select>
<script>
let [s1, s2] = document.querySelectorAll("select"),
    fragment = document.createDocumentFragment();
s1.addEventListener("change", e => {
    let val = s2.value;
    for (let x  of e.target.options){
       x.value >= e.target.value && fragment.appendChild(x.cloneNode(true));
    }
    s2.options.length = 0;
    s2.appendChild(fragment);
    val > e.target.value  && (s2.value = val);
});
</script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамически сменяющий друг друга текст eugene111 Events/DOM/Window 5 03.01.2016 02:33
[общий вопрос] Есть-ли методы держать html и js отдельно друг от друга? wayzer Элементы интерфейса 7 21.02.2015 00:39
програмное позиционирование фиксированных элементов относительно друг друга sav-oks Общие вопросы Javascript 2 04.11.2014 13:51
Всплывание событий в HTML5. Перекрытие элементами друг друга. iis_ (X)HTML/CSS 3 10.09.2014 21:43
Два события перебивают друг друга BorodinKO Общие вопросы Javascript 2 29.08.2012 12:59