C# 删除foreach中的文本?

C# 删除foreach中的文本?,c#,javascript,asp.net-mvc-4,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> <inp

我将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>
}
有人能解释一下我错在哪里吗。谢谢

问题是
(this.checkbox.checked)
,它不引用checkbox元素

将复选框id
mychekbox
作为第二个参数传递到
taskDone()
,获取该元素并验证它是否被
if(checkbox.checked)
选中


函数taskDone(id,checkBoxId){
var c=document.getElementById(id);
var checkBox=document.getElementById(checkBoxId);//获取复选框
如果(checkBox.checked){//验证是否选中
c、 className=“罢工”;
}
否则{
c、 className=“nostrike”;
}
}

我认为你应该做
这个。选中
而不是
这个。复选框。选中
@archie请看一下你的答案。苏曼-谢谢!它起作用了:)所以我不理解我的错误
这个。复选框
没有引用您想要的复选框。
<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>
.strike
{text-decoration: line-through;}
<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";
    }
}