Функция return onchange не работает

У меня есть меню выбора опции, которое я хочу использовать для нескольких функций, но вместо того, чтобы обертывать этот код вокруг каждой функции, я думал, что я не делаю переменную вне его, поэтому я могу использовать это. Теперь я пытаюсь это с возвращением переменной и вызовом этой функции, но она работает только первый и не запускается, когда я выбираю другой вариант.

как лучше всего этого добиться?

<select id="level_select" onchange="LevelName()">
                    <option select disabled>Select Level</option>
                    <option value="2d" id="high_water_pass_1">Highwater Pass 1</option>
                    <option value="2e" id="high_water_pass_2">Highwater Pass 2</option>
</select>

var name = LevelName();

function LevelName() {
    level = $('#level_select').find(":selected").attr("id");
    return level;
}

console.log(name);

2 ответа

  1. Вы должны позвонить console.logвнутри вашей функции:

    function LevelName() {
       level = $('#level_select').find(":selected").attr("id");
       console.log(level);
       return level;
    }
    

    Ваш console.logсрабатывает один раз.

  2. Вот рабочая скрипка: https://jsfiddle.net/gdb2xod8/2/ .

    Я действительно ничего не изменил, кроме расположения самого скрипта, нажмите на JavaScript gear, и вы заметите, что я положил его в голову

    Вам нужно поставить свой скрипт перед вашим html, голова это хорошее место:

    <html>
    <head>
    <script>
      //script here, or better, reference your script in the src attribute
      var name = LevelName();
    
      function LevelName() {
        level = $('#level_select').find(":selected").attr("id");
        console.log(level)
        return level;
      }
    
      console.log(name);
    </script>
    </head>
    <body>
      <select id="level_select" onchange="LevelName()">
        <option selected disabled>Select Level</option>
        <option value="2d" id="high_water_pass_1">Highwater   Pass 1</option>
        <option value="2e" id="high_water_pass_2">Highwater Pass 2</option>
    </select>
    </body>
    </html>
    

    Кроме того, я изменил ваш атрибут «select» на «selected». Должно дать вам поведение, которое вы ожидаете.