从选中复选框的父行获取元素

Get elements from Parent Row of checked checkboxes

本文关键字:获取 元素 复选框      更新时间:2023-09-26

表中有如下行:

<tr class="data_rows" ng-repeat='d in t2'> <td class="tds"> <input class='checkBoxInput' type='checkbox' onchange='keepCount(this)'></td> <td class="tds"><a href='perf?id={{d.ID}}'>{{d.ID}}</a></td> <td class="tds">{{d.HostOS}}</td> <td class="tds">{{d.BuildID}}</td> <td class="tds">{{d.Description}}</td> <td class="tds">{{d.User}}</td> <td class="tds">{{d.StartTime}}</td> <td class="tds">{{d.UniqueMeasure}}</td> <td class="tds">{{d.TotalMeasure}}</td> </tr>

下面是for按钮的HTML,它将调用函数从选中的复选框中收集id并存储它们。

<div id='compButtonDiv' align='center' style="display: none;"> <input id='cButton' type='button' value='compare selections' onclick='submitSelection()' style= "margin :0 auto" disabled> </div>

数据在t2中,由长度为15-20的数组组成。我想做的是获得ID的值,即2选中的复选框的{{d.ID}},以便我可以将它们存储在一个变量中,并将它们作为查询参数传递给URL使用' location。Href = url?param1&

javascript:

function keepCount(obj){     
debugger;
//var count=0;
if(obj.checked){
    obj.classList.add("checked");
}else{
    obj.classList.remove("checked");
}
var count = document.getElementsByClassName("checked").length;
var cBtn = document.getElementById('cButton');
//alert(count);
if(count == 2){
    cBtn.disabled = false;
}
else if(count < 2){
    cBtn.disabled= true;
}
else{
    cBtn.disabled= true;
    alert("Please Select two sets for comparison. You have selected: " +     count);
}
}
function submitSelection(){
// what should be the code here??
location.href= "existingURL?a&b";
}

现在谁能告诉我如何得到id的??我需要从被选中的复选框中提取ID(在点击按钮的代码我上面提到的)。

谢谢。

- e

首先,当我们使用angularjs时,我们倾向于越来越少地依赖于DOM操作。

因此,你能做的就是把ngModel附加到复选框上。如:

<input class='checkBoxInput' ng-model='d.isChecked' type='checkbox' onchange='keepCount(this)'>

的作用是,它将变量(在您的例子中是列表中item的属性)附加到复选框上。如果选中,则为true,如果未选中,则初始值为undefined,随后选中,然后取消选中,则为false。

现在,当您提交时,只需循环遍历函数中的原始列表并检查d.s ischecked的值(true/false values)。然后,您可以在单独的列表中添加必要的项目以提交。唯一需要注意的是,在提交时检查列表时,检查if(d.s ischecked),这样它就会忽略假值(false/undefined)。