我正在将ASP.NET MVC4和C#用于小型Web应用程序。它用于创建简单的待办事项清单。我正在苦苦挣扎的是,我在foreach中显示了一系列任务。每个任务都有一个复选框,基本上,当单击该复选框(即为true)时,文本就应该有一个勾号。我尝试使用Javascript,但没有用。这是我的代码:
@foreach (var item in Model)
{
<tr style="border: 1px solid;">
<td>
<input type="checkbox" name="checkbox" onchange="taskDone(@item.Id)" />
</td>
<td>
<p id="@item.Id">@Html.DisplayFor(modelItem => item.TaskDetails)</p>
</td>
</tr>
}
和Javascript:
<script language="javascript" type="text/javascript">
function taskDone(id) {
var c = document.getElementById(id);
if (this.checkbox.checked) {
c.className = "strike";
}
else {
c.className = "nostrike";
}
}
</script>
还有一点CSS:
.strike
{text-decoration: line-through;}
有人可以解释我要去哪里错了。谢谢
最佳答案
问题是(this.checkbox.checked)
,它不引用复选框元素
将复选框ID mychekbox
作为第二个参数传递给taskDone()
,获取该元素并验证是否已由if(checkBox.checked)
对其进行了检查,
<input id="mychekbox" type="checkbox" name="checkbox" onchange="taskDone(@item.Id, 'mychekbox')" />
function taskDone(id, checkBoxId) {
var c = document.getElementById(id);
var checkBox = document.getElementById(checkBoxId); //getting checkbox
if (checkBox.checked) { //validating checked or not
c.className = "strike";
}
else {
c.className = "nostrike";
}
}
关于c# - foreach中的删除线文字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21967906/