函数使用JavaScript从循环中获取正确的元素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)

我正在尝试使用html和javascript创建一个功能工资表,根据每行的输入计算每个员工的工资

为此,我使用循环为表的每一行中的总单元格生成了一个不同的id。问题是,当我尝试访问创建表的循环中的每个id时,javascript函数使用创建的表的最后一个id名称,而不是使用调用该函数的行中的当前id。 如何仅使用javascript和html获得正确的id

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()"/>