LINUX.ORG.RU

Выпадающие меню.

 , , ,


0

1

Как переписать так чтобы в выпадающем меню выбрать температуру, а затем в другом выпадающем меню выбрать толщину пластины относящейся к выбранной температуре.

<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>Расчёт параметров.</title>
  </head>

  <body>
    <h1>Расчёт параметров.</h1>
    <p align="center">
      <label for="temp200">Температура нагрева 200°C.</label>
      <select name="temp200" id="temp200">
	<option value="">Толщина пластины:</option>
	<option value="05">0,5 см</option>
	<option value="06">0,6 см</option>
	<option value="08">0,8 см</option>
      </select>
      <label for="temp300">Температура нагрева 300°C.</label>
      <select name="temp300" id="temp300">
	<option value="">Толщина пластины:</option>
	<option value="15">1,5 см</option>
	<option value="20">2,0 см</option>
	<option value="28">2,8 см</option>
      </select>
    </p>
    <script>
      const plate05 = [
	  { w1: 0.1, w2: 0.5, Jv1: 6.13, Jv2: 2.75, a: 3.89 },
	  { w1: 0.5, w2: 2, Jv1: 2.75, Jv2: 1.36, a: 3.54 },
	  { w1: 2, w2: 4, Jv1: 1.36, Jv2: 0.95, a: 3.57 },
	  { w1: 4, w2: 9.63, Jv1: 0.95, Jv2: 0.55, a: 3.5 },
	  { w1: 9.63, w2: 35, Jv1: 0.55, Jv2: 0.3, a: 3.5 },
	  { w1: 35, w2: 78.03, Jv1: 0.3, Jv2: 0, a: 3.5 }
      ];
      const plate06 = [
	  { w1: 0.1, w2: 0.5, Jv1: 6.13, Jv2: 2.75, a: 3.89 },
	  { w1: 0.5, w2: 2, Jv1: 2.75, Jv2: 1.36, a: 3.54 },
	  { w1: 2, w2: 4, Jv1: 1.36, Jv2: 0.95, a: 3.57 },
	  { w1: 4, w2: 9.63, Jv1: 0.95, Jv2: 0.55, a: 3.5 },
	  { w1: 9.63, w2: 35, Jv1: 0.55, Jv2: 0.3, a: 3.5 },
	  { w1: 35, w2: 78.03, Jv1: 0.3, Jv2: 0, a: 3.5 }
      ];
      const plate08 = [
	  { w1: 0.1, w2: 0.5, Jv1: 6.13, Jv2: 2.75, a: 3.89 },
	  { w1: 0.5, w2: 2, Jv1: 2.75, Jv2: 1.36, a: 3.54 },
	  { w1: 2, w2: 4, Jv1: 1.36, Jv2: 0.95, a: 3.57 },
	  { w1: 4, w2: 9.63, Jv1: 0.95, Jv2: 0.55, a: 3.5 },
	  { w1: 9.63, w2: 35, Jv1: 0.55, Jv2: 0.3, a: 3.5 },
	  { w1: 35, w2: 78.03, Jv1: 0.3, Jv2: 0, a: 3.5 }
      ];
      const plate15 = [
	  { w1: 0.1, w2: 0.5, Jv1: 6.13, Jv2: 2.75, a: 3.89 },
	  { w1: 0.5, w2: 2, Jv1: 2.75, Jv2: 1.36, a: 3.54 },
	  { w1: 2, w2: 4, Jv1: 1.36, Jv2: 0.95, a: 3.57 },
	  { w1: 4, w2: 9.63, Jv1: 0.95, Jv2: 0.55, a: 3.5 },
	  { w1: 9.63, w2: 35, Jv1: 0.55, Jv2: 0.3, a: 3.5 },
	  { w1: 35, w2: 78.03, Jv1: 0.3, Jv2: 0, a: 3.5 }
      ];
      const plate20 = [
	  { w1: 0.1, w2: 0.5, Jv1: 6.13, Jv2: 2.75, a: 3.89 },
	  { w1: 0.5, w2: 2, Jv1: 2.75, Jv2: 1.36, a: 3.54 },
	  { w1: 2, w2: 4, Jv1: 1.36, Jv2: 0.95, a: 3.57 },
	  { w1: 4, w2: 9.63, Jv1: 0.95, Jv2: 0.55, a: 3.5 },
	  { w1: 9.63, w2: 35, Jv1: 0.55, Jv2: 0.3, a: 3.5 },
	  { w1: 35, w2: 78.03, Jv1: 0.3, Jv2: 0, a: 3.5 }
      ];
      const plate28 = [
	  { w1: 0.1, w2: 0.5, Jv1: 6.13, Jv2: 2.75, a: 3.89 },
	  { w1: 0.5, w2: 2, Jv1: 2.75, Jv2: 1.36, a: 3.54 },
	  { w1: 2, w2: 4, Jv1: 1.36, Jv2: 0.95, a: 3.57 },
	  { w1: 4, w2: 9.63, Jv1: 0.95, Jv2: 0.55, a: 3.5 },
	  { w1: 9.63, w2: 35, Jv1: 0.55, Jv2: 0.3, a: 3.5 },
	  { w1: 35, w2: 78.03, Jv1: 0.3, Jv2: 0, a: 3.5 }
      ];
      const arrTemp200 = [
	  { x: "05", y: plate05 },
	  { x: "06", y: plate06 },
	  { x: "08", y: plate08 }
      ];

      const arrTemp300 = [
	  { x: "15", y: plate15 },
	  { x: "20", y: plate20 },
	  { x: "28", y: plate28 }
      ];
      const allTemp = [
	  arrTemp200, arrTemp300
      ];
      function findAndReturn(array, value) {
	  for (let obj of array) {
	      if (value === obj.x) {
		  console.log(obj.y);
		  // console.log(obj.w0L);
		  // console.log(obj.w0H);
		  // document.getElementById("w00").value = value;
		  // document.getElementById("w0L").value = obj.w0L;
		  // document.getElementById("w0H").value = obj.w0H;
	      }
	  }
      };
      const selectTemp200 = document.querySelector("#temp200");
      selectTemp200.addEventListener("change", () => {
	  const value1 = (selectTemp200.value);
	  // console.log(value1)
	  findAndReturn(arrTemp200, value1);
      });
      const selectTemp300 = document.querySelector("#temp300");
      selectTemp300.addEventListener("change", () => {
	  const value1 = (selectTemp300.value);
	  // console.log(value1)
	  findAndReturn(arrTemp300, value1);
      });
    </script>
  </body>
</html>

Делаешь две выпадайки: с выбором температуры и выбором толщины. При изменении выбранной температуры обновляешь опции для толщины.

На странице HTML необходимо сделать две выпадайки: для выбора температуры нагрева и выбора толщины пластины. При изменении выбранной температуры нужно изменять опции толщины.

Чтобы создать две выпадающие списки (выпадайки) в HTML, где опции второго списка зависят от выбранного значения первого списка, можно использовать HTML и JavaScript. Вот пример того, как это сделать:

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Выбор температуры и толщины</title>
</head>
<body>
    <label for="temperature">Выберите температуру нагрева:</label>
    <select id="temperature" onchange="updateThicknessOptions()">
        <option value="">--Выберите температуру--</option>
        <option value="100">100°C</option>
        <option value="200">200°C</option>
        <option value="300">300°C</option>
    </select>

    <br><br>

    <label for="thickness">Выберите толщину пластины:</label>
    <select id="thickness">
        <option value="">--Сначала выберите температуру--</option>
    </select>

    <script>
        const thicknessOptions = {
            "100": ["1 мм", "2 мм", "3 мм"],
            "200": ["2 мм", "4 мм", "6 мм"],
            "300": ["3 мм", "6 мм", "9 мм"]
        };

        function updateThicknessOptions() {
            const temperatureSelect = document.getElementById('temperature');
            const thicknessSelect = document.getElementById('thickness');

            // Очистить текущие опции
            thicknessSelect.innerHTML = '';

            const selectedTemperature = temperatureSelect.value;
            if (selectedTemperature && thicknessOptions[selectedTemperature]) {
                thicknessOptions[selectedTemperature].forEach(function(thickness) {
                    const option = document.createElement('option');
                    option.value = thickness;
                    option.text = thickness;
                    thicknessSelect.appendChild(option);
                });
            } else {
                const defaultOption = document.createElement('option');
                defaultOption.value = '';
                defaultOption.text = '--Сначала выберите температуру--';
                thicknessSelect.appendChild(defaultOption);
            }
        }
    </script>
</body>
</html>
static_lab ★★★★★
()

Еще вот так делают.

<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>Расчёт параметров.</title>
    <style>
        .temp:checked+select {
            display: block;
        }
        select {
            display: none;
        }
    </style>
  </head>
  <body>
    <h1>Расчёт параметров.</h1>
    <p align="center">
      <div name="temp" id="temp">
          <label><input type="radio" name="temp" class="temp" value="200" id="opt200" />Температура нагрева 200
              <select name="temp200" id="temp200">
            	<option value="">Толщина пластины:</option>
            	<option value="05">0,5 см</option>
            	<option value="06">0,6 см</option>
            	<option value="08">0,8 см</option>
              </select>
          </label>
          <br />
          <label><input type="radio" name="temp" class="temp" value="300" id="opt300" />Температура нагрева 300
              <select name="temp300" id="temp300">
            	<option value="">Толщина пластины:</option>
            	<option value="15">1,5 см</option>
            	<option value="20">2,0 см</option>
            	<option value="28">2,8 см</option>
              </select>
          </label>
      </div>      
    </p>
    <script>
        ...
    </script>
  </body>
</html>


damix9 ★★★
()
Ответ на: комментарий от static_lab
   const thicknessOptions = {
            "100": ["1 мм", "2 мм", "3 мм"],
            "200": ["2 мм", "4 мм", "6 мм"],
            "300": ["3 мм", "6 мм", "9 мм"]
        };

Код классный. Но у меня под «1 мм», «2 мм», «3 мм» и т.д. подразумевается объект типа

const 1 мм = [
	  { w1: 0.1, w2: 0.5, Jv1: 6.13, Jv2: 2.75, a: 3.89 },
	  { w1: 0.5, w2: 2, Jv1: 2.75, Jv2: 1.36, a: 3.54 },
	  { w1: 2, w2: 4, Jv1: 1.36, Jv2: 0.95, a: 3.57 },
	  { w1: 4, w2: 9.63, Jv1: 0.95, Jv2: 0.55, a: 3.5 },
	  { w1: 9.63, w2: 35, Jv1: 0.55, Jv2: 0.3, a: 3.5 },
	  { w1: 35, w2: 78.03, Jv1: 0.3, Jv2: 0, a: 3.5 }
      ];
который должен вернуться после выбора толщины.

saufesma
() автор топика
Ответ на: комментарий от saufesma

И вы не можете самостоятельно разделить option.value и option.text, по выбранному value выбрать из словаря нужный объект?

static_lab ★★★★★
()
Последнее исправление: static_lab (всего исправлений: 1)
Ответ на: комментарий от static_lab

Если честно, неизвестно время за которое я разберусь как это сделать. Тупо воткнув console.log(thickness) сюда

       function updateThicknessOptions() {
            const temperatureSelect = document.getElementById('temperature');
            const thicknessSelect = document.getElementById('thickness');

            // Очистить текущие опции
            thicknessSelect.innerHTML = '';

            const selectedTemperature = temperatureSelect.value;
            if (selectedTemperature && thicknessOptions[selectedTemperature]) {
                thicknessOptions[selectedTemperature].forEach(function(thickness) {
                    const option = document.createElement('option');
                    option.value = thickness;
                    option.text = thickness;
                    thicknessSelect.appendChild(option);
		    console.log(thickness); //<<<<<<<<<<<<
                });
            } else {
                const defaultOption = document.createElement('option');
                defaultOption.value = '';
                defaultOption.text = '--Сначала выберите температуру--';
                thicknessSelect.appendChild(defaultOption);
            }
        }
выдаёт в консоли при выборе 100°C
1 мм linuxorgru.html:45:15
2 мм linuxorgru.html:45:15
3 мм linuxorgru.html:45:15
и при дальнейшем выборе толщин console.log(thickness); уже молчит. А я потёк, блин.

saufesma
() автор топика
Последнее исправление: saufesma (всего исправлений: 1)
Ответ на: комментарий от saufesma

Вот так вроде проще. Попробуй по нажимать менюшки. И за идеи спасибо static_lab

<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>Расчёт параметров.</title>
  </head>

  <body>
    <h1>Расчёт параметров.</h1>
    <p align="center">Пластина при температуре:</p>
    <p align="center">20C°&nbsp;&nbsp;&nbsp;&nbsp 100C°&nbsp;&nbsp;&nbsp 200C° &nbsp;&nbsp;&nbsp  300C°</span></p>
    <p align="center">
      <label for="t20"></label>
      <select name="t20" id="t20">
	<option value="">см</option>&nbsp
	<option value="05">0,5 см</option>
	<option value="06">0,6 см</option>
	<option value="08">0,8 см</option>
      </select>
      
      <label for="t100"></label>
      <select name="t100" id="t100">
	<option value="">см</option>
	<option value="15">1,5 см</option>
	<option value="20">2,0 см</option>
	<option value="28">2,8 см</option>
	</select>
	      <label for="t200"></label>
      <select name="t200" id="t200">
	<option value="">см</option>
	<option value="15">1,5 см</option>
	<option value="20">2,0 см</option>
	<option value="28">2,8 см</option>
	</select>
	      <label for="t300"></label>
      <select name="t300" id="t300">
	<option value="">см</option>
	<option value="15">1,5 см</option>
	<option value="20">2,0 см</option>
	<option value="28">2,8 см</option>
      </select>
    </p>
    <script>
      const plate05 = [
	  { w1: 0.1, w2: 0.5, Jv1: 6.13, Jv2: 2.75, a: 3.89 },
	  { w1: 0.5, w2: 2, Jv1: 2.75, Jv2: 1.36, a: 3.54 },
	  { w1: 2, w2: 4, Jv1: 1.36, Jv2: 0.95, a: 3.57 },
	  { w1: 4, w2: 9.63, Jv1: 0.95, Jv2: 0.55, a: 3.5 },
	  { w1: 9.63, w2: 35, Jv1: 0.55, Jv2: 0.3, a: 3.5 },
	  { w1: 35, w2: 78.03, Jv1: 0.3, Jv2: 0, a: 3.5 }
      ];
      const plate06 = [
	  { w1: 0.1, w2: 0.5, Jv1: 6.13, Jv2: 2.75, a: 3.89 },
	  { w1: 0.5, w2: 2, Jv1: 2.75, Jv2: 1.36, a: 3.54 },
	  { w1: 2, w2: 4, Jv1: 1.36, Jv2: 0.95, a: 3.57 },
	  { w1: 4, w2: 9.63, Jv1: 0.95, Jv2: 0.55, a: 3.5 },
	  { w1: 9.63, w2: 35, Jv1: 0.55, Jv2: 0.3, a: 3.5 },
	  { w1: 35, w2: 78.03, Jv1: 0.3, Jv2: 0, a: 3.5 }
      ];
      const plate08 = [
	  { w1: 0.1, w2: 0.5, Jv1: 6.13, Jv2: 2.75, a: 3.89 },
	  { w1: 0.5, w2: 2, Jv1: 2.75, Jv2: 1.36, a: 3.54 },
	  { w1: 2, w2: 4, Jv1: 1.36, Jv2: 0.95, a: 3.57 },
	  { w1: 4, w2: 9.63, Jv1: 0.95, Jv2: 0.55, a: 3.5 },
	  { w1: 9.63, w2: 35, Jv1: 0.55, Jv2: 0.3, a: 3.5 },
	  { w1: 35, w2: 78.03, Jv1: 0.3, Jv2: 0, a: 3.5 }
      ];
      const plate15 = [
	  { w1: 0.1, w2: 0.5, Jv1: 6.13, Jv2: 2.75, a: 3.89 },
	  { w1: 0.5, w2: 2, Jv1: 2.75, Jv2: 1.36, a: 3.54 },
	  { w1: 2, w2: 4, Jv1: 1.36, Jv2: 0.95, a: 3.57 },
	  { w1: 4, w2: 9.63, Jv1: 0.95, Jv2: 0.55, a: 3.5 },
	  { w1: 9.63, w2: 35, Jv1: 0.55, Jv2: 0.3, a: 3.5 },
	  { w1: 35, w2: 78.03, Jv1: 0.3, Jv2: 0, a: 3.5 }
      ];
      const plate20 = [
	  { w1: 0.1, w2: 0.5, Jv1: 6.13, Jv2: 2.75, a: 3.89 },
	  { w1: 0.5, w2: 2, Jv1: 2.75, Jv2: 1.36, a: 3.54 },
	  { w1: 2, w2: 4, Jv1: 1.36, Jv2: 0.95, a: 3.57 },
	  { w1: 4, w2: 9.63, Jv1: 0.95, Jv2: 0.55, a: 3.5 },
	  { w1: 9.63, w2: 35, Jv1: 0.55, Jv2: 0.3, a: 3.5 },
	  { w1: 35, w2: 78.03, Jv1: 0.3, Jv2: 0, a: 3.5 }
      ];
      const plate28 = [
	  { w1: 0.1, w2: 0.5, Jv1: 6.13, Jv2: 2.75, a: 3.89 },
	  { w1: 0.5, w2: 2, Jv1: 2.75, Jv2: 1.36, a: 3.54 },
	  { w1: 2, w2: 4, Jv1: 1.36, Jv2: 0.95, a: 3.57 },
	  { w1: 4, w2: 9.63, Jv1: 0.95, Jv2: 0.55, a: 3.5 },
	  { w1: 9.63, w2: 35, Jv1: 0.55, Jv2: 0.3, a: 3.5 },
	  { w1: 35, w2: 78.03, Jv1: 0.3, Jv2: 0, a: 3.5 }
      ];
            const arrT20 = [
	  { x: "15", y: plate15 },
	  { x: "20", y: plate20 },
	  { x: "28", y: plate28 }
	    ];
            const arrT100 = [
	  { x: "15", y: plate15 },
	  { x: "20", y: plate20 },
	  { x: "28", y: plate28 }
      ];
      const arrT200 = [
	  { x: "05", y: plate05 },
	  { x: "06", y: plate06 },
	  { x: "08", y: plate08 }
      ];

      const arrT300 = [
	  { x: "15", y: plate15 },
	  { x: "20", y: plate20 },
	  { x: "28", y: plate28 }
      ];
      const arrTall = [
	  {x: "200", y: arrT200},
	  {x: "300", y: arrT300}
      ];

            function findObjAndReturn(array, value) {
	  for (let obj of array) {
	      if (value === obj.x) {
		  console.log(obj.y);
		  return(obj.y);
		  // console.log(obj.w0L);
		  // console.log(obj.w0H);
		  // document.getElementById("w00").value = value;
		  // document.getElementById("w0L").value = obj.w0L;
		  // document.getElementById("w0H").value = obj.w0H;
	      }
	  }
	    };
            const selectT20 = document.querySelector("#t20");
      selectT20.addEventListener("change", () => {
	  document.querySelector("#t100").value = "";
	  document.querySelector("#t200").value = "";
	  document.querySelector("#t300").value = "";
	  const value1 = (selectT20.value);
	  // console.log(value1)
	  findObjAndReturn(arrT20, value1);
      });
        const selectT100 = document.querySelector("#t100");
      selectT100.addEventListener("change", () => {
	  document.querySelector("#t20").value = "";
	  document.querySelector("#t200").value = "";
	  document.querySelector("#t300").value = "";
	  const value1 = (selectT100.value);
	  // console.log(value1)
	  findObjAndReturn(arrT100, value1);
      });
  
      const selectT200 = document.querySelector("#t200");
      selectT200.addEventListener("change", () => {
	  document.querySelector("#t20").value = "";
	  document.querySelector("#t100").value = "";
	  document.querySelector("#t300").value = "";
	  const value1 = (selectT200.value);
	  // console.log(value1)
	  findObjAndReturn(arrT200, value1);
      });
      const selectT300 = document.querySelector("#t300");
      selectT300.addEventListener("change", () => {
	  document.querySelector("#t20").value = "";
	  document.querySelector("#t100").value = "";
	  document.querySelector("#t200").value = "";
	  const value1 = (selectT300.value);
	  console.log(value1);
	  findObjAndReturn(arrT300, value1);
	  // console.log();
      });

    </script>
  </body>
</html>

saufesma
() автор топика