标签: selectors-api

如何使 querySelectorAll 仅从当前元素的子元素中选择

我要问的是如何使用 HTML5 的 querySelector/querySelectorAll 实现 jQuery 的 children() 的等效功能,即如何指定选择器模式中的当前元素。

例如:

  <div id="foo">
    <div class="bar" id="div1">
      <div class="bar" id="div1.1">
      </div>
    </div>
    <div class="bar" id="div2"></div>
  </div>
Run Code Online (Sandbox Code Playgroud)

有了document.getElementById('foo').querySelectAll('div.bar')这三个div旨意被选中。如果我只想得到 div1 和 div2,而不是 div1 的子 div1.1 怎么办?我如何写[[current node]] > div.bar像 css 选择器?

有人可以对此有所了解吗?

javascript css selectors-api

3
推荐指数
2
解决办法
4362
查看次数

多个值的 document.querySelectorAll()

我有这个代码:

<a href="javascript:alert('something1')">Click</a>
<a href="javascript:prompt('something2')">Click</a>
<a href="javascript:alert('something3')">Click</a>
<a href="javascript:prompt('something4')">Click</a>
Run Code Online (Sandbox Code Playgroud)

为了获取单独的集合元素,我使用document.querySelectorAll("a[href^='javascript:alert(");document.querySelectorAll("a[href^='javascript:prompt");

现在,如何使用泛型来获取包含警报和提示的document.querySelectorAll()所有此类元素?<a href

我试过这个:

document.querySelectorAll("a[href^='javascript:prompt(,a[href^='javascript:alert(");

document.querySelectorAll("a[href^='javascript:prompt(","a[href^='javascript:alert(");

还有这么多。但它不起作用,出现"DOMException - not a valid selector"错误。

有什么帮助吗?

html javascript selectors-api

3
推荐指数
1
解决办法
6154
查看次数

如何将EventListener添加到querySelectorAll并在触发时获取元素索引(或id,值)?

我正在站点菜单中制作背景选择器,当用户单击规范时,它将更改背景图像。图像(触发单选按钮)。我想使用 querySelectorAll(".selected") 来执行此操作,循环它并设置 addEventListener(click, ..) 获取索引(或 id, value)并使用 background_list 数组设置 backgroundImage 。

菜单图片

var background_list = ["/images/air-balloon.jpg","/images/mary-christmas.jpg","/images/mountain.jpg","/images/panorama.jpg","/images/plants.jpg","/images/sunset-mountain.jpg","/images/underwater-star.jpg","/images/vinyl-player.jpg"...]
Run Code Online (Sandbox Code Playgroud)
<div class="dropdown-background-container">

    <div>
        <input                  
            type="radio"
            id="image-1"
            class="select"
            value="1"
        >
        <label for="image-1">
            <img src="/images/air-balloon-small.jpg" alt="Air Balloons">
        </label>
    </div>
    <div>
        <input
            type="radio"
            id="image-2"
            class="select"
            value="2"
        >
        <label for="image-2">
            <img src="/images/mary-christmas-small.jpg" alt="Mary Christmas">
        </label>
    </div>
Run Code Online (Sandbox Code Playgroud)

例如我有几十张图像

document.querySelectorAll(".select").forEach( item => {
      item.addEventListener('click', arrow => {
      document.body.style.backgroundImage = `url("${background_list[index]}")`
    })})
Run Code Online (Sandbox Code Playgroud)

有没有办法找到触发的索引(id或值)?您将如何为此实现代码,最简单的解决方案是什么?我是 JS 初学者

html javascript css addeventlistener selectors-api

3
推荐指数
1
解决办法
3308
查看次数

querySelectorAll语法无效

尝试在错误控制台中执行这2个代码块:

第一.输出NodeList.

var selector = "*[data-type=day][data-day='23']";
var a = document.querySelectorAll( selector );
alert( a );
Run Code Online (Sandbox Code Playgroud)

第二个.生成错误.

var selector = "*[data-type=day][data-day=23]";
var a = document.querySelectorAll( selector );
alert( a );
Run Code Online (Sandbox Code Playgroud)

为什么data-type=day语法不好而data-day=23不是?属性值是否应始终包装为data-type='day'

这是例外,在第二种情况下引发:

[例外......"指定了无效或非法字符串"代码:"12"nsresult:"0x8053000c(SyntaxError)"]

javascript firefox css-selectors selectors-api

2
推荐指数
1
解决办法
5710
查看次数

为什么这个表达式在querySelectorAll中是非法的

为什么将el.querySelectorAll与以'>'开头的选择器一起使用是违法的?什么是简单的替代解决方案?

var el = document.createElement('div');

el.querySelector('> div');
Run Code Online (Sandbox Code Playgroud)

上面的代码将产生一个DOM Exception 12.解决方案必须避免使用jquery,它确实支持它而不会出错.可以提供Zepto解决方案,因为Zepto不支持.

当选择器不以'>'开头时,它是有效的:

el.querySelectorAll('div > div');
Run Code Online (Sandbox Code Playgroud)

javascript css css-selectors css3 selectors-api

2
推荐指数
1
解决办法
1825
查看次数

querySelectorAll()从另一个页面到html

早上好,我正在通过AJAX查找另一页的HTML:

var xml = new XMLHttpRequest()
xml.onreadystatechange = function () {
    if (xml.readyState == 4) {
        // here I need to work with data
        // xml.responseText
    }
}
xml.open("GET", url, false);
xml.send(null)
Run Code Online (Sandbox Code Playgroud)

如何将querySelectorAll()应用于另一个页面的html内容?

html javascript ajax selectors-api

2
推荐指数
1
解决办法
1676
查看次数

casperJS如何使用querySelector或querySelectorAll通过特定的起始文本选择元素

我必须使用casperJS将一个文件上传到客户服务器,现在在上传之前我需要模拟两个特定链接的点击,这些链接(简单的HTML锚点)没有名称/ id/class ...(真的丑陋的HTML代码)所以我有唯一的选择,通过它的文本内容来选择它.

如何使用querySelectorquerySelectorAll方法找到它?

到目前为止,我可以提出以下(不成功的尝试):(

querySelector("a[text()='texttofind']");
querySelector("a[text='texttofind']");
querySelector("a[text=texttofind]");
Run Code Online (Sandbox Code Playgroud)

编辑后的所有建议

TITLE UPDATED 更具体地说明我的问题,似乎只与casperjs有关

平台 - Windows 7 - CasperJS版本1.1.0-beta3 - phantomjs版本1.9.7 - Python 2.7

所以,可能我太愚蠢了:(现在我发布一个完整的例子,遗憾地对我不起作用:(

HTML主索引

<html>
<head>
<title>TEST Main Page</title>
</head>
<frameset cols="100,100" >
    <frame name="menu_a" src="menu_1.html">
    <frame name="menu_b" src="menu_2.html">
</frameset>
</html>
Run Code Online (Sandbox Code Playgroud)

HTML menu_1.html

<html>
<head>
<title>TEST Menu 1</title>
</head>
<body style="background-color:red;">
<h3>Menu 1</h3>
<select onchange="javscript:alert('test')" id="test" size="1" name="systemID">
    <option value="0">---</option>
    <option selected="selected" value="1">TestMenu1            </option>
    <option value="17">TestMenu2                               </option>
</select>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

HTML menu_2.html

<html>
<head>
<title>TEST …
Run Code Online (Sandbox Code Playgroud)

javascript css-selectors selectors-api casperjs

2
推荐指数
1
解决办法
2万
查看次数

为 querySelectorAll 添加例外

说我有这样的事情:

function one() {
    var findthemall = document.querySelectorAll("*");
    var i;
    for (i = 0; i < findthemall.length; i++) {
        //doin' some cool stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我知道我可以querySelectorAll在它们之间使用逗号列出多个标签,但是有没有一种简单的方法可以为某些特定的类/标签设置例外?

喜欢: querySelectorAll("*, but not p and br tags")

javascript selectors-api

2
推荐指数
1
解决办法
689
查看次数

使用 AngleSharp 获取和下载图片

我开始在一个项目中使用 Anglesharp,我不仅需要获取和下载 HTML,还需要获取和下载文档的图像。我知道在 Document 对象中有一个名为 Images 的属性,但似乎它没有得到所有这些,我在 YouTube 页面上做了一个测试,只得到了一个(重复了几次)。例如,我想获取当前视频的缩略图,这似乎在<meta>标签内。更准确地说,图像存储在这种标签中:

<meta content="https://i.ytimg.com/vi/hW-kDv1WcQM/hqdefault.jpg" property="og:image">
Run Code Online (Sandbox Code Playgroud)

所以我想知道是否有一种方法可以选择页面内任何图像的所有节点/url,无论使用什么标签。我认为 QuerySelectorAll 在这种情况下不起作用,因为它只选择一种类型的节点。您可以尝试在 github 上找到的示例代码来验证这一点(我只是用 YouTube 更改了 url,也更改了选择器 :D):

// Setup the configuration to support document loading
var config = Configuration.Default.WithDefaultLoader();
// Load the names of all The Big Bang Theory episodes from Wikipedia
var address  = "https://www.youtube.com/watch?v=hW-kDv1WcQM&feature=youtu.be";
// Asynchronously get the document in a new context using the configuration
var document = await BrowsingContext.New(config).OpenAsync(address);
// This CSS selector gets the desired content
var cellSelector = …
Run Code Online (Sandbox Code Playgroud)

html c# image selectors-api anglesharp

2
推荐指数
1
解决办法
3178
查看次数

querySelector() - 第一个内部元素

我正在使用SVG.js select()函数,该函数使用querySelector()函数.

目前,我使用的命令是:select("[id='1']")(1可以被其他一些数字替换)

我想做的是选择这个元素中的第一个内部元素.或者,我可以通过标签名称来选择它.

怎么做?

我试过select("[id='1']:first")但收到了错误.

顺便说一句,我选择它的原因是,显然querySelector有一个id为数字的问题.

javascript jquery svg jquery-selectors selectors-api

2
推荐指数
1
解决办法
1243
查看次数