- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
每当我在 Microsoft Edge 中使用 querySelectorAll
和 :scope
伪选择器时,控制台中就会出现此错误
SCRIPT5022: SCRIPT5022: SyntaxError
我想知道是否有 querySelectorAll
的替代方案,我在其中使用此参数::scope > * > table
。我不想为此使用 jQuery。谢谢。
我还想补充一点,querySelector
可以单独工作
好的,这是代码示例:
function pJSON(panel) {
var json = {tables: [], images: [], text: ""};
var tables = Array.from(panel.querySelectorAll(":scope > * > table"));
var images = Array.from(panel.querySelectorAll(":scope > * > img"));
var text = panel.querySelector(":scope > textarea");
tables.forEach(table => {
json["tables"].push(tJSON(table));
});
images.forEach(image => {
json["images"].push(image.outerHTML);
});
if (text) {
json["text"] = text.value;
}
return json;
}
我要再次指出,它适用于除 IE 和 Microsoft Edge 之外的所有浏览器
哦,还有一个可能动态添加的 HTML 示例,这是我调用此方法时的代码:
<div>
<input type="file" multiple=""><br>
<button>Add Table</button><br>
<div>
<table style="display: inline-table;">
<tbody>
<tr>
<td>
<input type="file" multiple=""><br>
<button>Add Table</button><br>
<textarea placeholder="Write some text"></textarea>
</td>
<td>
<input type="file" multiple=""><br>
<button>Add Table</button><br>
<textarea placeholder="Write some text"></textarea>
</td>
<td>
<button style="margin-left: 100px;">x</button>
</td>
</tr>
<tr>
<td>
<input type="file" multiple=""><br>
<button>Add Table</button><br>
<textarea placeholder="Write some text"></textarea>
</td>
<td>
<input type="file" multiple=""><br>
<button>Add Table</button><br>
<textarea placeholder="Write some text"></textarea>
</td>
<td>
<button style="margin-left: 100px;">x</button>
</td>
</tr>
</tbody>
</table>
<button style="margin-left: 100px;">x</button>
</div>
</div>
最佳答案
所以你所追求的实际上是 :scope
的填充。
有一个可用:https://github.com/jonathantneal/element-qsa-scope
它的工作原理基本上是首先在要匹配的元素上定义一个足够唯一的选择器,并将其添加到传递给 querySelector 的选择器之前。
const li = document.getElementById('target');
console.log('no :scope', li.querySelector('li>a')) // Link
// workaround
const UUID = Date.now()+'';
li.setAttribute('data-scope-uuid', UUID);
console.log('workedaround', li.querySelector('[data-scope-uuid="'+UUID+'"] li>a'));
li.removeAttribute('data-scope-UUID');
// where supported
console.log(':scope', li.querySelector(':scope li>a'));
<ul>
<li id="target"><a>Link</a>
<ul>
<li><a>Sublink</a></li>
</ul>
</li>
</ul>
要测试 native 支持,您只需将 document.querySelector(':scope') === document.documentElement
包装在 try catch block 中。
关于javascript - :scope pseudo-selector in MS Edge,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52955799/
我已经为我的项目配置了 tailwindcss,但是在 npm run start 之后我得到了以下错误。 (node:7032) UnhandledPromiseRejectionWarning:错
我使用 create-react-app 创建了一个应用程序并且在尝试构建生产优化版本时遇到错误 yarn build : > yarn build help yarn run v1.9.4 $ re
我正在寻找一种将 :content 伪元素添加到空元素的方法,并遇到了 :empty CSS 伪选择器,它看起来像会达到我正在寻找的目的。基本上,我想添加一个通用消息,如“Nothing found”
Font Awesome 未提供 :after伪。是否可以使用 :after默认情况下而不是 :before伪? 例如,如果我使用:facebook那么图标应该使用:after而不是 :before
我想在禁用时更改切换按钮的颜色。我使用 :before fetaure of css 实现了这个切换。代码位于 https://jsfiddle.net/sachin8085/adm5t7rz/6/
我最近在 Firefox 中发现了一个警告 Warning: Unknown pseudo-class or pseudo-element 'hidden' 这是页面 http://eleven23.
我有一个多项式 data Poly a = Poly [a] 我希望能够做类似 fmap (take 3) polynomial 的事情但我不能,因为 Poly不是真正的仿函数,因为 f我在 fmap
我想将某种样式应用到一个元素的所有后代,除了一些。 这是我正在尝试实现的示例:http://jsfiddle.net/f8FLe/ .root * :not(.nested) { color:
我正在学习 Haskell 中的代数 DT。我想做的是创建一个新的 ADT 来“扩展”现有的 ADT。我找不到如何表达我想要的东西,有人可以建议替代模式或建议解决方案。我希望它们是不同的类型,但复制和
我现在正在通过将所有内容包含在一个函数中,将全局变量变成“伪全局变量”,从而从我的代码中删除大部分全局变量,这些全局变量都可以从该函数 block 内的任何地方访问。 (function(){ var
我正在尝试创建动画时间轴。当时间轴出现时,我正在使用滚动显示来触发动画。每个时间线条目都有一个左边框和一个伪元素 :before 与之关联。 :before 元素是一个标记每个时间线条目开始的点。当动
我的大脑并没有完全围绕这个:我正在使用我的 h1 上的 :before 和 :after 伪元素>。我的 h1 有一个 100% 宽度。 我希望 :after 是一个重复的背景图形,填充空白,后置文本
是否可以在 :before 伪类的内容中添加类或 ID?我知道这行不通,但是类似: #menu { height: 100px; width: 100px; } #menu:befor
假设我有一个带有下划线的跨度: Hello, I'm underlined text .underline { color: #444; font-size: 250%; display:
这个问题在这里已经有了答案: CSS selector with period in ID (3 个答案) 关闭 6 年前。
我正在尝试将 :after 伪元素移动到 div 的末尾,有点像页脚。 Some content here .box { height: 60vh; } .box:after {
在您指定内容之后,:AFTER 和:BEFORE 伪元素的默认display: 属性是什么。 是display: inline还是display: inline-block? 无法在 default
我遇到这样一种情况,我有两个元素在 DOM(邻居)中处于同一级别。当我悬停在 DOM 中之前的元素时,我希望显示它下面的元素。我还想访问我正在显示的元素的子元素并显示其 :before 伪元素。 SC
我有一个样式规则: .tabs li { border: 1px solid transparent; } .tabs li:not(:last-child):not(:nth-child(2
我有两个相同的 CSS 规则,但一个没有覆盖另一个。 我使用了 right 而不是 left 规则,但它不会覆盖 left 规则。另一方面 top 规则正在覆盖。我也使用了 !important 规则
我是一名优秀的程序员,十分优秀!