我想将几个<tr>
元素的类设置为reset
。这应该通过JavaScript完成。我知道通常使用JavaScript操作节点很简单:
function changeclass() {
var trs = document.getElementsByTagName("tr");
for(var i=0; i<trs.length; i++) {
trs[i].className = "reset";
}
};
changeclass();
现在,我尝试将<tr>
元素的选择限制为包含文本等于<td>
的{{1}}的元素,并选择以下行代替reset
完全失败了:
document.getElementsBy...
现在我不知道问题是什么,错误的做法?我对Javascript的理解缺陷? ......? ......任何提示都会受到影响。
答案 0 :(得分:4)
反过来说:找到tds,然后访问父母:
var tds=table.getElementsByTagName("td");
for (var i=0;i<tds.length;i++) {
if (tds[i].innerHTML.indexOf("reset")>=0){
tds[i].parentNode.className="reset";
}
}
答案 1 :(得分:2)
正确的表达是
var trs = document.evaluate("//tr[td/text()='rest']", document.body, null, XPathResult.ANY_TYPE, null);
您也可以trs.iterateNext()
<强>更新强>
文件更改后的结果将不再有效。所以你可以将它们推入数组并在所有iterateNext()
之后使用它。
var trsx = document.evaluate("//tr[td/text()='rest']", document.body, null, XPathResult.ANY_TYPE, null);
var trs = [];
if (trsx){
var tr = trsx.iterateNext();
while(tr){
trs.push(tr);
tr = trsx.iterateNext();
}
}
for(var i=0; i<trs.length; i++) {
trs[i].className = "reset";
}
或者您可以使用其他XPathResult类型。
var trs = document.evaluate("//tr[td/text()='rest']", document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if (trs){
for(var i=0; i<trs.snapshotLength; i++){
tr = trs.snapshotItem(i);
tr.className = "rest";
}
}
答案 2 :(得分:1)
JQuery的
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
$('tr td').each(function(){
if($(this).html() == 'reset') {
$(this).parent().addClass('reset');
)
});
</script>
答案 3 :(得分:1)
您可能想使用jquery和以下代码:
$("tr>td").each(function () {
$(this).parent().attr('class','reset');
});
答案 4 :(得分:1)
function changeclass() {
var trs = document.getElementsByTagName("tr");
for(var i=0; i<trs.length; i++) {
var tds = trs[i].getElementsByTagName('td'),
txt = trs[i].innerHTML.indexOf('reset') != -1;
if (txt && tds.length) trs[i].className = "reset";
}
}
changeclass();
答案 5 :(得分:1)
querySelectorAll的解决方案:
// Query elements as real arrays
var query = function(selector, element) {
element = element || document;
return [].slice.call(element.querySelectorAll(selector));
};
var trs = query('tr').filter(function(tr) {
return query('td', tr).filter(function(td) {
return td.textContent.trim() == 'reset';
}).length;
});
现在trs
是包含tr
文字td
的所有"reset"
的数组。
答案 6 :(得分:0)
function changeclass() {
var trs = document.getElementsByTagName("tr");
// It has at least one
for(var i=0; i<trs.length; i++) {
if (trs[i].firstChild.tagName=="td"&&trs[i].firstChild.text="reset") {
trs[i].className = "reset";
}
}
};
changeclass();
这适用于只有第一个标记为tr
td
来源: