Почему я не могу создать файл .js, работающий с MVC?

#javascript #asp.net-mvc

#javascript #asp.net-mvc

Вопрос:

У меня есть очень простой JS-код для выполнения в моем представлении модели:

Просмотр (я показываю основную часть, в которую включен ‘id’):

 @model IEnumerable<XYZ.Models.DocumentsModel>

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
    <tr> 
            <td>
               <select id="decisionList">
                    <option value="0" selected></option>
                    <option value="1">None</option>
                    <option value="2">Cancellation</option>
                    <option value="3">Payment date</option>
                    <option value="4">Manual date</option>
                    <option value="5">No date</option>
                </select>

            </td>
    </tr>

<script src="~/Content/Site.js"></script>
  

и JS:

 var decisionList = document.getElementById("decisionList");

decisionList.addEventListener("change", function () {

    var selectedOptionIndex = decisionList.options[decisionList.selectedIndex].index;

    alert(selectedOptionIndex);  // no alert pops-up when changing the option on a list
    console.log(selectedOptionIndex); //no logs in a console at all

});
  

и JS вообще не работает, мой выбранный список не реагирует. Я пробовал даже другие более простые коды в моем JS-файле, но и это не работает. Я думаю, что я правильно прикрепил. Я также пытался добавить в _Layout.cshtml, но это также не помогло (я прикрепил ссылки в разделе head моего _Layout, чтобы все было сделано правильно). Что с ним не так?

Комментарии:

1. Загружается ли ваш файл скрипта? Поставьте предупреждение в качестве самой первой команды скрипта. Если он не запускается, ваш скрипт не загружается.

2. Я попробовал это, и да, он загружается и появляется всплывающее предупреждение. Может быть, что-то не так с моим кодом? addEventListener не работает вообще

3. Убедитесь var decisionList , что значение не определено, и в вашем HTML должен быть только один экземпляр decisionList

4. Хорошо, понял. var decisionList = document.getElementById("decisionList"); относится только к первому выбранному списку, у меня около 100 строк, в каждой — этот выбранный список. Использование getElementsByClassName — лучший вариант?

5. Вы хотите сказать, что у вас более одного элемента с одинаковым decisionList идентификатором? Если да, то да, вы не должны этого делать. Идентификатор должен быть уникальным на всей странице. И если вы подключаете к нему слушателя, вам, вероятно, не следует делать это с помощью class , так как у каждого элемента с этим классом будет один и тот же слушатель … вероятно, это не то, что вы намереваетесь.