我在我的剃刀视图中有以下代码,我想在每个响应旁边操作按钮。Javascript按钮与在For循环中的剃刀视图
一旦点击,我希望它复制对实际响应的响应。
但我得到以下错误
Microsoft JScript runtime error: Unable to get value of the property 'foo': object is null or undefined.
@for (int i = 0; i < Model.Responses.Count(); i++)
{
<div class="col-md-4">
@Html.LabelFor(x => Model.Responses[i].Response, htmlAttributes: new { @class = "control-label"})
@Html.DisplayFor(x => Model.Responses[i].Response)
</div>
<input type="button" name="set_Value" id="@i" value="Copy Response to Actual Response" class="btn btn-success" dataset-foo="@Model.Responses[i].Response" onclick="setVale(this)" />
<div class="col-md-4">
@Html.LabelFor(x => Model.Responses[i].ActualResponse, htmlAttributes: new { @class = "control-label"})
@Html.TextAreaFor(x => Model.Responses[i].ActualResponse, htmlAttributes: new { @class = "from-control", @id = "actualResponse-" + i, rows = 5, columns = 40})
</div>
<script type="text/javascript">
function setValue(btn)
{
var id = btn.id;
var value = btn.value;
var foo = btn.dataset.foo;
document.getElementById('actualResponse-' + id).value = foo
}
</script>
}
您有多个ID为'actualResponse'的元素。你应该通过附加当前索引来使它们唯一。 actualResponse0,actualResponse1,... –
@RobPurcell我修改了帖子,以显示我是如何设法引用现在有效的不同ID,但是它只将最后一个Response复制到任何ActualResposes而不是正确相关的ID? –