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

10-10 05:35