Я не уверен, что понял ваш вопрос, но я думаю, что это возможное решение:
function myFunction() {
let messages = {
Audi: 'Haldo for: ',
BMW: 'Maldo for: ',
Mercedes: 'Baldo for',
Volvo: 'Marioldo for'
}
var x = document.getElementById("mySelect").value;
document.getElementById("demo").innerHTML = `${messages[x]} ${x}`;
}
myFunction(); // Now run the funtion for a init
Я создаю JSON с n ключами со значением единственной опции выбора и использую значение select like selector для получения строки, присвоенной ключу JSON.
ОБНОВЛЕНИЕ С ВОПРОСОМ В КОММЕНТАРИИ
<!DOCTYPE html>
<html>
<body>
<p>Select a new car from the list.</p>
<select id="mySelect" onchange="myFunction()">
<option value="Audi">Audi
<option value="BMW">BMW
<option value="Mercedes">Mercedes
<option value="Volvo">Volvo
</select>
<p>When you select a new car, a function is triggered which outputs the value of the selected car.</p>
<p id="demo"></p>
<ul id="list">
</ul>
<script>
function myFunction() {
let messages = {
Audi: {
brandName: 'Haldo for: ',
features: ['Magic', 'free', 'furry']
},
BMW: {
brandName: 'Maldo for: ',
features: ['lovely']
},
Mercedes: {
brandName: 'Baldo for',
features: ['twirling', 'tasty']
},
Volvo: {
brandName: 'Marioldo for',
features: ['bar', 'foo', 'zio']
}
}
var x = document.getElementById("mySelect").value;
document.getElementById("demo").innerHTML = `${messages[x].brandName} ${x}`;
let ul = document.getElementById("list")
ul.innerHTML = '';
for (let feat of messages[x].features) {
console.log(feat)
var li = document.createElement('li');
li.innerHTML = feat;
ul.appendChild(li);
}
}
myFunction();
</script>
</body>
</html>