在当前处理所有内容,<span> <div> 然后检查属性的值<span>



我有点拘泥于我的javascript,我正在为一个网站制作一个防油渍的脚本,这限制了我只能使用普通的旧javascript。目前,我的脚本所做的是,搜索所有的表,以及带有ProjectTable-row的表行,然后为每个ProjectTable-row查找带有ProjectTable-statusdiv,如果找不到div,它将删除整行

它非常有效。

document.getElementById("gmSomeID").onclick = function showAlert() {
    console.log('invoked');
    var projectDescriptions = document.querySelectorAll('tr.ProjectTable-row'),
        projectDescriptions = Array.prototype.slice.call(projectDescriptions); 
    projectDescriptions.forEach(function(el) { 
        if (el.querySelector('div.ProjectTable-status')) {
        } else {
             el.parentNode.removeChild(el);
        }
    });
}

但是,现在我不知道如何在当前的div上工作,并在其中的所有span上循环。我还差两步。

  1. 所有span上的环路
  2. 搜索包含data-content="apple"的所有span,如果没有span具有此属性,则将其删除

类似这样的东西:

对于这样的HTML标签:

<div class="ProjectTable-status">
    <span data-content="apple">
    </span>
</div>

这将不会被删除CCD_ 12是CCD_。

对于这样的HTML标签:

<div class="ProjectTable-status">
    <span data-content="banana">
    </span>
</div>

这将被删除,没有跨度具有data-content="apple"

对于这样的HTML代码:

<div class="ProjectTable-status">
    <span data-content="banana"></span>
    <span data-content="apple"></span>
</div>

div包含至少1个具有appledata-contentspan

我不知道,现在该如何进行,真的很累或尝试任何事情,我甚至不知道如何检查属性值。

希望有人能指引我,或者让我走上正确的道路。

谢谢!

从您提供的内容开始,我只是对它进行了轻微的重构,以在它循环时检查每个div中是否有"apple"跨度。使用continue,如果我们发现div元素包含一个"apple"span,我们可以在不删除div元素的情况下执行循环的下一次迭代。这段代码没有经过测试,只是我突然想到的,所以它可能需要一些调整。

document.getElementById("gmSomeID").onclick = function showAlert() {
console.log('invoked');
var projectDescriptions = document.querySelectorAll('tr.ProjectTable-row'),
    projectDescriptions = Array.prototype.slice.call(projectDescriptions);
//pointer to work with current div 
var currentDiv;
projectDescriptions.forEach(function(el) { 
    currentDiv = el.querySelector('div.ProjectTable-status');
    //do we have a div?
    if (currentDiv) {
        //look for an apple within the div
        if(currentDiv.querySelector('span[data-content="apple"]')){
             //go to the next iteration of the loop without delete
             continue;
        }
    } 
    //if we made it this far, we didn't find an apple
    el.parentNode.removeChild(el);            
});

};

相关内容

  • 没有找到相关文章

最新更新