我正在将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;}
有人可以解释我哪里出错了。感谢
答案 0 :(得分:2)
问题是(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";
}
}