需要帮助在 Javascript 中查找/遍历 dom
Need help finding/traversing dom in Javascript
我确定这是一个多余的问题,但是我已经找了一个小时左右,空手而归,所以希望有人能帮忙......
寻找一种方法,在搜索"Chicken"(或任何值)时使用JS(不是jquery)返回下面的li类。
<li class='113252'>
<span>Chicken</span>
</li>
所以希望javascript在给定span值时返回li类(在本例中为Chicken)。
谢谢!
试试这个:
var spanArray = document.getElementsByTagName('span');
for (var i=0; i<spanArray.length; i++) {
if(spanArray[i].innerHTML.toUpperCase() === 'CHICKEN')
{
alert(spanArray[i].parentNode.className);
break;
}
}
现在,我更熟悉jQuery,但似乎在这里链接的小提琴中工作:http://jsfiddle.net/FranWahl/fCzYc/2/(更新以包括匹配后的建议break;
)
您可以为parentNode
添加更多类型检查,以确保它是li
等等,但这应该可以帮助您入门。
另外,我完全不确定这在大文档中的效率如何。
编辑
阅读了一些评论后,我更新了上面的代码以包含 ajax333221 建议的中断。
丹尼斯提到最好在ul
上打电话给getElementByTagName
.鉴于您可以在没有ul
的情况下拥有li
,我将其作为单独的代码添加到此处,因为我不确定 OP 是否具有ul
标签。
针对每个ul
进行代码查询(此处为 jsFiddle)
var ulArray = document.getElementsByTagName('ul');
var parentFound = false;
for (var i = 0; i < ulArray.length; i++) {
var spanArray = ulArray[i].getElementsByTagName('span');
for (var i = 0; i < spanArray.length; i++) {
if (spanArray[i].innerHTML.toUpperCase() === 'CHICKEN') {
alert(spanArray[i].parentNode.className);
parentFound = true;
break;
}
}
if(parentFound)
{
break;
}
}
这绝不是完全完整的,这就是为什么你应该寻求一个库,但它做了两件事:
- 递归遍历子元素(从文档的 BODY 开始),以查找提供的文本
- 递归遍历父元素以查找提供的父元素标记,一旦找到,它将返回该父元素的类
JSFiddle: http://jsfiddle.net/vol7ron/bttQN/
function getParentClass(element, parentTag){
if (element.tagName == parentTag.toUpperCase())
return element.className;
return getParentClass(element.parentNode,parentTag);
}
window.findParentClass = function (text,tagName){
var elements = document.getElementsByTagName('body');
for (var n=elements.length; n--;){
var foundClass = (function searchNextChild(el){
if (!el.children.length) {
if (el.textContent == text)
return getParentClass(el,tagName);
return;
}
for (var i=0, n=el.children.length; i<n; i++)
return searchNextChild(el.children[i]);
})(elements[n]);
return foundClass;
}
};
调用示例:
alert( findParentClass('Chicken','li') );
相关文章:
- 遍历DOM查找字符串有时会正确返回
- 遍历 DOM 以查找哪个元素具有焦点
- 循环遍历表中的行并获取行查找错误中的每个值
- 遍历JSON以查找树路径
- 使用jQuery,如何在元素上或元素内查找数据属性?(树遍历)
- jQuery 遍历 -- 查找相对于共同祖先的元素
- Javascript:遍历对象数组以查找键值对并将它们呈现在表中 td
- ES6 的特定方法,用于遍历两个数组并在每个数组中查找匹配项
- 查找模式 遍历多个数组的 FOR 循环
- Javascript:如何遍历列表以查找活动类
- DOM 遍历以查找父级的兄弟姐妹
- jQuery 遍历和查找文本框
- 需要帮助在 Javascript 中查找/遍历 dom
- 使用Jquery遍历DOM以查找输入并根据数据属性修改值
- jQuery遍历-查找当前输入的上一个标签
- 如何遍历JavaScript对象以查找父对象
- javascript遍历表单元素以查找输入值
- 如何遍历HTML节点以查找匹配项并从节点中获取下一个innerHTML
- 循环遍历对象数组以查找是否有一个值不同
- 遍历javascript对象以查找匹配项