document.querySelectorAll(“span + a”)不起作用?

时间:2016-10-13 07:46:43

标签: getelementbyid selectors-api

我有这样的HTML。

<span class="vm-video-side-notification-text-item">
    <a href="/video_copynotice?v=4XrAMcXy0co" class=" yt-uix-sessionlink " data-url="/video_copynotice?v=4XrAMcXy0co" data-sessionlink="ei=DTr_V7jrJM2luAKd1JSgCQ">Includes copyrighted content</a>
</span>

我用

var x = document.querySelectorAll("span + a");

alert(x.length);

警报为“0”......我不知道为什么 我看到w3school说了

  

元素+元素
  div + p
  选择紧跟在<p>元素

之后的所有<div>元素

所以我尝试了span + a。任何人都可以纠正我的错误吗?

1 个答案:

答案 0 :(得分:0)

你将元素与标签混为一谈。

虽然a的开始标记位于span的开始标记之后,但a 元素位于span内} 元素

因此,为了使您的示例有效,您可以

  1. "span > a"内的“任意a的查询选择器更改为span

    var x = document.querySelectorAll("span > a");
    
    alert(x.length);
    
  2. 或将html更改为a元素之后的span元素

    <span class="vm-video-side-notification-text-item">
    </span>
    <a href="/video_copynotice?v=4XrAMcXy0co" class=" yt-uix-sessionlink " data-url="/video_copynotice?v=4XrAMcXy0co" data-sessionlink="ei=DTr_V7jrJM2luAKd1JSgCQ">Includes copyrighted content</a>
    
  3. (...但不是两个!)