函数使用JavaScript从循环中获取正确的元素ID时出错
我正在尝试使用html和javascript创建一个功能工资表,根据每行的输入计算每个员工的工资 为此,我使用循环为表的每一行中的总单元格生成了一个不同的id。问题是,当我尝试访问创建表的循环中的每个id时,javascript函数使用创建的表的最后一个id名称,而不是使用调用该函数的行中的当前id。 如何仅使用javascript和html获得正确的id函数使用JavaScript从循环中获取正确的元素ID时出错,javascript,html,model-view-controller,Javascript,Html,Model View Controller,我正在尝试使用html和javascript创建一个功能工资表,根据每行的输入计算每个员工的工资 为此,我使用循环为表的每一行中的总单元格生成了一个不同的id。问题是,当我尝试访问创建表的循环中的每个id时,javascript函数使用创建的表的最后一个id名称,而不是使用调用该函数的行中的当前id。 如何仅使用javascript和html获得正确的id This is my html code: @foreach (var item in Model.CurrentUnpaidWages)
This is my html code:
@foreach (var item in Model.CurrentUnpaidWages)
{
<tr>
@{ id = Convert.ToString(Model.Employees[i].PersonID);}
<td>
@Model.Employees[i].FirstName @Model.Employees[i].LastName
</td>
<td id="WagePerHour">
@Html.DisplayFor(modelItem => item.WagePerHour)
@{wagePerHour = Convert.ToDecimal(item.WagePerHour);}
</td>
<td>
@{ id = Convert.ToString(Model.Employees[i].PersonID);}
<div class="form-group">
<div class="col-md-10">
<input oninput="GetWagePerMonth(this)" id=@id type="number"
min="1" />
@Html.ValidationMessageFor(model => model.Wage.HoursPerMonth,
"", new { @class = "text-danger" })
</div>
</div>
</td>
<td><div id="d"@id></div></td>
<td> @Html.DisplayFor(modelItem => item.Bonus)</td>
<td>@Html.DisplayFor(modelItem => item.Paid)</td>
@{i++;}
<td></td>
</tr>
提前谢谢
编辑:我已经编辑了我的代码。见上文。
现在,我每次都会在警报中获得正确的id,但函数不会更改div id=@id的文本。div保持为空。我希望每次在输入中输入金额时:
然后,应根据函数在div id=@id中输入正确的文本。目前,一切都没有发生
<input oninput="GetWagePerMonth(this)" id=@id type="number" min="1" />
改用这个,看看你是否得到任何回应
function GetWagePerMonth(idx) {
alert(idx.id); /* */
document.getElementById("d"+idx.id).innerHTML = "Test Value";
}
希望这能帮助你找到一个可以即兴创作的解决方案
编辑:
创建一个新函数
function CallMyFunc(){
for(i=0,i < 10, i++){
GetWagePerMonth(i) ;
}
}
函数CallMyFunc(){
对于(i=0,i<10,i++){
GetWagePerMonth(i);
}
}
在HTML部分,让我们看看是否可以创建一个按钮来调用该函数
<input type = "button" onClick="javascript:CallMyFunc()"/>
由于id为WagePerHour
的元素不是输入
,因此使用.value
将不起作用,.innerHTML
将起作用。此外,要进行计算,变量必须是数字,因此需要类似这样的内容:Number(工资)*Number(wagePerHour)
对不起,现在发布编辑的函数,问题是函数没有获得正确的id元素-@id。谢谢!脚本中的变量@wagePerHour
是否获得值?在oninput事件上调用GetWagePermonth时,请尝试传递id。@LGSon-谢谢,是的,我确实获得了一个值,问题是该值总是进入列的最后一个单元格,因为函数正在获取last@id从循环中创建,而不是当前的。不,对不起,什么也没发生。。之所以使用jquery,是因为我只想在呈现页面后使用javascriptLook查看html源代码。输入元素是否获得了正确的id?是的,警报提供了正确的id,但是document.getElementById(idx.id).innerHTML=wagePerMonth;有几处变化不起作用。显然,您将有两个id相同的元素。。所以先纠正一下。打电话给as,然后:使用“d”+idx.id获取div。看看这是否有效谢谢,你帮了我!
function CallMyFunc(){
for(i=0,i < 10, i++){
GetWagePerMonth(i) ;
}
}
<input type = "button" onClick="javascript:CallMyFunc()"/>