在foreach中删除文本?

时间:2014-02-23 12:00:32

标签: c# javascript asp.net-mvc-4

我正在将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;}

有人可以解释我哪里出错了。感谢

1 个答案:

答案 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";
    }
}