【发布时间】:2021-06-30 05:30:11
【问题描述】:
我制作了一个 JS 函数,它为酒店房间的客户创建选择器标签。因此,如果我的房间容量等于 4,它会动态创建 4 个选择器。在我的选择器标签中有包含客户端的选项。选项值是客户端的 ID,但是当我将 options.text 设置为客户端的名称时,例如出现错误:
未捕获的 ReferenceError:未定义 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>
奇怪的是,如果我将 item.Name 更改为 item.ID 或 item.phoneNumber,它会起作用。这意味着它仅出于某种原因支持整数。然后我尝试将 optionz.text 设置为“Hello world”,它也起作用了!!!这让我大吃一惊: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>
【问题讨论】:
-
一些代码尚未发布,我看不到您在哪里为任何
<select>元素注册onchange处理程序。该错误显然与此有关。 -
我刚刚用所需的代码更新了我的帖子!
-
King King 兄弟有什么想法吗?
-
抱歉,我不太确定。您应该确保
changeFunc定义在您的 HTML 可访问的范围内。该错误清楚地表明changeFunc无法识别(未定义) -
为什么当我从“item.Name”更改为“item.ID”或“item.phoneNumber”时它会起作用。没有意义
标签: javascript asp.net asp.net-mvc asp.net-core