Bug???将数据从模型加载到js



我制作了一个JS函数,为酒店房间的客户创建选择器标签。所以,如果我的房间容量等于4,它会动态地创建4个选择器。在我的选择器标记中,有包含客户端的选项。选项值是客户端的ID,但当我将options.text设置为客户端名称时,例如,我会得到一个错误:

未捕获引用错误:未定义changeFunc在HTMLSelectElement.onchange这是我的功能:

<script type="text/javascript">
function changeFunc() {
var elements = document.getElementsByClassName('selector2');
while (elements.length > 0) {
elements[0].parentNode.removeChild(elements[0]);
}
var selector = document.getElementById('selector');
var selectedValue = selector.value;
console.log(selectedValue);
@foreach (var item in Model.Rooms)
{
<text>
if (@item.RoomID == selectedValue)
{
var selectedValue2 = @item.Capacity;
}
</text>
}
var inputContainer = document.getElementById('for-input');
for (var i = 0; i < selectedValue2; i++)
{
var selector2 = inputContainer.appendChild(document.createElement("select"));
selector2.className = "selector2";
@foreach (var item in Model.Clients)
{
<text>
var optionz = document.createElement("option");
optionz.value = @item.ID;
optionz.text = @item.Name; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
selector2.appendChild(optionz);
</text>
}
}
}
下面是我的div,它包含了所有的选择器:
<div id="for-input"></div>

奇怪的是,如果我更改项目。项目名称。ID或item.phoneNumber,它有效。这意味着它支持整数只是出于某种原因。然后我尝试将optionz.text设置为";你好世界"它也起作用了!!!这让我大吃一惊:X

我意识到我对这个模型有一些问题,并试图将客户端加载到另一个选择器中:

<select>
@foreach (var item in Model.Clients)
{
<option value="@item.Name">@item.Name</option>
}
</select>

它也起作用了!!!

问题从哪里来???

请不要过多地评判我,这是我在JS中的第一个代码!我正在学习

提前感谢!

更新!这是我的onchange处理程序:

<div class="form-group">
<label asp-for="Reservations2.RoomId" class="control-label"></label>
<select asp-for="Reservations2.RoomId" onchange="changeFunc();" class="form-select" id="selector">
@foreach (var item in Model.Rooms)
{
<option value="@item.RoomID">Room @item.RoomID with capacity of@item.Capacity</option>
}
</select>
<span asp-validation-for="Reservations2.RoomId" class="text-danger"></span>
</div>

解决方案太简单了!我只需要把价值放在引号里。。。

最新更新