C# nth-child 逻辑测试

标签 c# css dom

我一直在研究我自己的 headless 浏览器实现,我觉得我把我的 nth-child 选择器逻辑搞得一团糟。给定一个元素及其在其兄弟组中从 0 开始的位置是否有一个简单的单行表达式来查看该元素是否属于结果集中?

   public bool Evaluate(HTMLElement element)
   {
        if (element.parentNode == element.ownerDocument)
            return false;

        List<Element> children = element.Parent.Children
            .Where(e => e is Element)
            .Cast<Element>()
            .ToList();
        int index = children.IndexOf(element);
        bool result = (an + b test here);
        return result;
   }

目前我有一组复杂的分支逻辑,基于 (a) 和 (b) 的 0 值测试,我怀疑我让它变得比需要的更复杂。

最佳答案

如果我理解正确,你需要确定是否存在 n 使得 index = a*n + b 对于某些修复了ab

bool result = (a == 0) ? b == index : (Math.Abs(index - b) % Math.Abs(a)) == 0;

如果a 为0,则index 必须为b。否则,a 必须平分 ib 之间的差异。

当然,如果不允许 a 为负值,您可以跳过 Math.Abs​​(a) 调用。

关于C# nth-child 逻辑测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27513155/

相关文章:

css - 当宽度 < 1680 时 BootStrap 删除偏移量

html - 在 UL 中居中​​图像

c# - 从 ViewModel 操作 View

javascript - 将对象的 Id 设置为数据库中的下一个可用行?

C# - 如何判断 DataColumn 是否支持空值?

c# - 在客户端加密 ASP.NET 文本字段并在服务器端解密

jquery - 遍历 HTML : how can I hide a color when I move to another element?

javascript - 如何关闭内存GCed?

javascript - 找出哪些代码导致 DOM 节点创建失控的好方法是什么?

javascript - 如何把很多 sibling 放到一个div中