无法弄清为什么对象无法读取其自身的值

时间:2020-06-30 13:16:01

标签: javascript drop-down-menu

我正在为我的兄弟写一段有关神奇宝贝的代码,而Pokeball对象并没有告诉我它的价值,也不能告诉我原因。这是代码:

    let pokeball = document.getElementById("pokeballType");
    let catchRate = document.getElementById('catchRate')
    console.log(`the type of pokeball is ${typeof(pokeball)}.`);
    if (pokeball.options[pokeball.selectedIndex].value === 'timerBall') {
        timerBall.style.display = 'inline';
        timerBallLabel.style.display = 'inline';
        console.log('Working')
    }

    <select name = 'pokeball2' id="pokeballType">
        <option value=1 selected = 'selected'>Pokeball</option>
        <option value=2>Ultra Ball</option>
        <option value=1.5>Great Ball</option>
        <option value=3.5>Dusk Ball if used inside cave</option>
        <option value=4>Quick ball if used on first turn</option>
        <option value='timerBall'>Timer Ball</option>
    </select>

2 个答案:

答案 0 :(得分:1)

您需要一个change事件,该事件将在de selectbox中更改值时触发。否则,它将仅在启动时运行。

let pokeball = document.getElementById("pokeballType");

pokeball.addEventListener("change", () => {
  if (pokeball.value === 'timerBall') {
    console.log("timerBall selected...");
  }else{
    console.log(pokeball.value);
  }
});
<select name = 'pokeball2' id="pokeballType">
    <option value=1 selected = 'selected'>Pokeball</option>
    <option value=2>Ultra Ball</option>
    <option value=1.5>Great Ball</option>
    <option value=3.5>Dusk Ball if used inside cave</option>
    <option value=4>Quick ball if used on first turn</option>
    <option value='timerBall'>Timer Ball</option>
</select>

答案 1 :(得分:0)

首先,请确保在解析所有HTML之后以及在script中进行选择之后,您的select正在执行。您的代码未显示任何事件处理,因此我们可能会假设您正在尝试进行任何选择之前先获取选定的值。

这是您应该设置的内容,并请注意,仅通过索要value的{​​{1}}来获取选定的选项值比获取select值要容易得多。

selectedIndex