Javascript 对所选元素进行分组:document.querySelectorAll

Javascript 对所选元素进行分组:document.querySelectorAll,javascript,css-selectors,casperjs,selectors-api,Javascript,Css Selectors,Casperjs,Selectors Api,您好,我如何对文档进行分组。如果我遇到这样的情况,请查询选择All: <div> <p class="flower">Flower 1</p> <p class="bee">Bee 1</p> <p class="tree"></p> </div> <div> <p class="flower">Flower 2</p> <p class="dud

您好,我如何对文档进行分组。如果我遇到这样的情况,请查询选择All:

<div>
 <p class="flower">Flower 1</p>
 <p class="bee">Bee 1</p>
 <p class="tree"></p>
</div>

<div>
 <p class="flower">Flower 2</p>
 <p class="dude"></p>
 <p class="snow-leopard"></p>
</div>

<div>
 <p class="flower">Flower 3</p>
 <p class="tree"></p>
 <p class="mountain"></p>
 <p class="wizard"></p>
 <p class="bee">Bee 3</p>
</div>
这种方法:

var flowers = document.querySelectorAll(flower);
var bees = document.querySelectorAll(bee);

然后在这两个数组上进行迭代是不起作用的。

问题是,仅仅使用CSS选择器无法真正将花与蜜蜂匹配起来。你需要遍历所有的花,找到蜜蜂的兄弟姐妹(如果有的话)。一种方法是找到花的父母,然后寻找蜜蜂

var obj = Array.prototype.map.call(document.querySelectorAll(".flower"), function(f){
    var node = {flower: f.textContent};
    var bee = f.parentNode.querySelector(".bee");
    if (bee) {
        node.bee = bee.textContent;
    }
    return node;
});

问题是你不能仅仅用CSS选择器来匹配花朵和蜜蜂。你需要遍历所有的花,找到蜜蜂的兄弟姐妹(如果有的话)。一种方法是找到花的父母,然后寻找蜜蜂

var obj = Array.prototype.map.call(document.querySelectorAll(".flower"), function(f){
    var node = {flower: f.textContent};
    var bee = f.parentNode.querySelector(".bee");
    if (bee) {
        node.bee = bee.textContent;
    }
    return node;
});

不完全确定你想用JSON做什么,你应该从哪里得到“黄色”的
flower:“黄色”
?不管怎样,这就是用类“bee”和“flower”查询所有元素的方式:
document.queryselectoral(.flower.bee”)
不完全确定你想用JSON做什么,从
flower:“yellow”
中的“yellow”应该在哪里得到?无论如何,这就是使用类“bee”和“flower”查询所有元素的方式:
document.queryselectoral(“.flower.bee”)
这是真的。尽管选择器
.flower~.bee
表示这两个元素,但其中只有一个是主题,只有主题将成为目标。虽然选择器列表
.flower、.bee
将两个元素都表示为每个选择器的主题,但它根本不表示任何类型的关系。这是事实。尽管选择器
.flower~.bee
表示这两个元素,但其中只有一个是主题,只有主题将成为目标。虽然选择器列表
.flower、.bee
将这两个元素表示为每个选择器的主题,但它根本不表示任何类型的关系。