Как получить значения из динамического выпадающего Javascript (объект) - PullRequest
0 голосов
/ 29 сентября 2018

Я создал динамический выпадающий список и хочу получить значения из выбранной опции.Динамический выпадающий список работает нормально, но у меня есть проблемы с получением значений из выбранной опции.Например, я хочу взять значение avgDamage из выбранного объекта tpPrototype.

Нужна помощь здесь

HTML:

<form name="myform" id="myForm">
    <p>tank 1</p>
    <div class="select">
        <select classname="optone" id="tankSel" size="1">
            <option value="" selected="selected">Tank Nation</option>
        </select>
    </div>
    <div class="select">
        <select name="opttwo" id="typeSel" size="1">
            <option value="" selected="selected">Tank Type</option>
        </select>
    </div>
    <div class="select">
        <select name="optthree" id="nameSel" size="1">
            <option value="" selected="selected">Tank Name</option>
        </select>
    </div>
</form>

JavaScript:

const tpPrototype = {
    name: "50TP prototyp",
    avgDamage: 440,
    healthPool: 1500,
    reloadTime: 13.62,
},
tpMarkowskiego = {
    name: "53TP prototyp",
    avgDamage: 420,
    healthPool: 1450,
    reloadTime: 12.18,
},
proggettoM35 = {
    name: "Progetto M35 mod.46",
    avgDamage: 240,
    healthPool: 1400,
    reloadTime: 1,
},

window.onload = function () {
let tankSel = document.getElementById("tankSel");
    typeSel = document.getElementById("typeSel");
    nameSel = document.getElementById("nameSel");

for (let tank in tankObject) {
    tankSel.options[tankSel.options.length] = new Option(tank, tank);
}
tankSel.onchange = function () {
    typeSel.length = 1;
    nameSel.length = 1;
    if (this.selectedIndex < 1) return;
    for (let type in tankObject[this.value]) {
        typeSel.options[typeSel.options.length] = new Option(type, type);
    }
};
tankSel.onchange();
typeSel.onchange = function () {
    nameSel.length = 1;
    if (this.selectedIndex < 1) return;
    let names = tankObject[tankSel.value][this.value];
    for (let i = 0; i < names.length; i++) {
        nameSel.options[nameSel.options.length] = new Option(names[i], names[i]);
    }
};

1 Ответ

0 голосов
/ 29 сентября 2018

Это выглядит как дубликат вопроса 1085801

Обычно, когда у вас есть объект выбора, вы получаете доступ к атрибуту "value" через:

var selectedValue = selectionObject.options[index].value;

или вы можете получить доступ к фактическому тексту, такому как «Тип резервуара» в вашем исходном HTML, как:

var selectedText = selectionObject.options[index].text;

Получив это, вы просто сможете использовать это значение / текст для доступа к вашему «tankObject»."свойство:

var selectedAvgDamage = tpPrototype[selectedText];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...