Я бы использовал объект, индексированный как element
, значения которого являются массивами #myText
, #myText1
, #myText2
значений:
const elementValues = {
Methane: [190.6, 45.99, 0.012],
Ethane: [305.3, 48.72, '0.100'], // you'll need to use strings for trailing zeros
Propane: [369.8, 48.48, 0.152],
'n-Butane': [425.1, 37.96, '0.200'],
// ...
}
function dropdownTip(element){
const possibleArr = elementValues[element];
if (possibleArr) {
['myText', 'myText1', 'myText2'].forEach(
(id, i) => document.getElementById(id).value = possibleArr[i]
);
}
}
Вы могли бы рассмотреть использование классов вместо идентификаторов, что сделало бы код немного проще:
const elementValues = {
Methane: [190.6, 45.99, 0.012],
Ethane: [305.3, 48.72, '0.100'], // you'll need to use strings for trailing zeros
Propane: [369.8, 48.48, 0.152],
'n-Butane': [425.1, 37.96, '0.200'],
// ...
}
function dropdownTip(element){
const possibleArr = elementValues[element];
if (possibleArr) {
document.querySelectorAll('.myText').forEach((elm, i) => {
elm.value = possibleArr[i];
});
}
}
const elementValues = {
Methane: [190.6, 45.99, 0.012],
Ethane: [305.3, 48.72, '0.100'], // you'll need to use strings for trailing zeros
Propane: [369.8, 48.48, 0.152],
'n-Butane': [425.1, 37.96, '0.200'],
// ...
}
function dropdownTip(element){
const possibleArr = elementValues[element];
if (possibleArr) {
document.querySelectorAll('.myText').forEach((elm, i) => {
elm.value = possibleArr[i];
});
}
}
<input onchange="dropdownTip(this.value)">
<br>
<input class="myText"></div>
<input class="myText"></div>
<input class="myText"></div>
Если вам не нравятся скобочные обозначения, другой вариант - написать длинную многострочную строку, которую вы впоследствии преобразуете в объект:
const elementValuesStr = `
Methane 190.6 45.99 0.012
Ethane 305.3 48.72, 0.100
Propane 369.8 48.48 0.152
n-Butane 425.1 37.96, 0.200
...
`;
const elementValues = elementValuesStr
.trim()
.split('\n')
.reduce((a, line) => {
const [key, ...vals] = line.match(/\S+/g);
a[key] = vals;
return a;
}, {});
И тогда вы можете использовать тот же код, что и выше, используя elementValues
.
const elementValuesStr = `
Methane 190.6 45.99 0.012
Ethane 305.3 48.72, 0.100
Propane 369.8 48.48 0.152
n-Butane 425.1 37.96, 0.200
`;
const elementValues = elementValuesStr
.trim()
.split('\n')
.reduce((a, line) => {
const [key, ...vals] = line.match(/\S+/g);
a[key] = vals;
return a;
}, {});
console.log(elementValues);