Самый простой способ сделать это - изменить подавление двух элементов select, применяя класс, установленный в display: none;
вместо использования show()
и hide()
. Затем вы можете использовать псевдоселектор :not()
, чтобы проверить наличие класса.
Поскольку querySelector
вернет null
, если элемент не найден, вы можете использовать его в качестве логической проверки в троичном выражении и получить значение из того, что было показано при выборе.
Вот простой пример, иллюстрирующий идею:
// Select all ".example1" spans
var example1Spans = document.querySelectorAll(".example1");
console.log("Example 1 spans: ", example1Spans);
// Select only the default ".example1" span
var defaultSpan = document.querySelectorAll(".example1:not(.highlighted)");
console.log("Default example 1 span: ", defaultSpan);
// Log the value of the visible ".example2" span
var visibleSpan = (document.querySelector("#example2Span1:not(.hidden)")) ?
document.querySelector("#example2Span1") :
document.querySelector("#example2Span2");
console.log("Example 2 visible content: ", visibleSpan.textContent);
.highlighted {background-color: yellow;}
.hidden {display: none;}
<h1>Highlighted span example:</h1>
<div>
Default Span ==> <span id="example1Span1" class="example1">Default content</span> <==<br />
Highlighted Span ==> <span id="example1Span2" class="example1 highlighted">Highlighted content</span> <==
</div>
<h1>Hidden span example:</h1>
<div>
Hidden Span ==> <span id="example2Span1" class="example2">Span 1 content (visible)</span> <==<br />
Visible Span ==> <span id="example2Span2" class="example2 hidden">Span 2 content (hidden)</span> <==
</div>
Этот последний бит кода ближе всего к тому, что вам нужно было бы сделать в вашем сценарии. если бы вы создали подобный «скрытый» класс, например:
.hidden {display: none;}
. , , и используйте это для подавления элементов "s4" и "s5" <select>
, вы сможете получить только видимый элемент, используя:
var visibleDriveTrainSelect = (document.querySelector("#s4:not(.hidden)")) ?
document.querySelector("#s4") :
document.querySelector("#s5");
var drivetrainids = visibleDriveTrainSelect.value;
Вы могли бы даже сократить его, если хотите:
var drivetrainids = (document.querySelector("#s4:not(.hidden)")) ?
document.querySelector("#s4").value :
document.querySelector("#s5").value;