我正在尝试选择正文中的所有标签,但想排除视频标签,这是我的代码,到目前为止,我不确定如何实现排除 - 任何建议和示例将不胜感激......
修订(完整)代码:
function assets(){
"use strict";
var elements = document.querySelectorAll("body *:not(video)");
elements.style.transition = "opacity 8s linear 0s";
elements.style.opacity = 0.25;
var elem = document.getElementsByTagName("video")[0];
elem.style.transition = "opacity 8s linear 0s";
elem.style.opacity = 1.0;
}
CSS有一个:not
伪类,它接受简单的选择器,如标签选择器。所以
var elements = document.querySelectorAll("body *:not(video)");
(*:not(...)
中的*
并不是真的必要。
下面是一个选择所有非div
的示例:
var elements = document.querySelectorAll("body *:not(div)");
Array.prototype.forEach.call(elements, function(e) {
console.log("Matched element: " + e.tagName);
});
<span>I'm a `span`</span>
<p>I'm a paragraph <strong>with a `strong` inside</strong></p>
<div>I'm a div</div>
<section>I'm a `section`
<div>I'm a `div` inside the `section`</div>
</section>
此代码的工作方式与 PHP 条带标签函数相同。条形功能。看看这个。 strip_tags(as, '<select>');
这里as
是一个包含标签代码的变量。不会删除在第二个参数中声明的所有标记。
function strip_tags(str,allow) {
// making sure the allow arg is a string containing only tags in lowercase (<a><b><c>)
allow = (((allow || "") + "").toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('');
var tags = /</?([a-z][a-z0-9]*)b[^>]*>/gi;
var commentsAndPhpTags = /<!--[sS]*?-->|<?(?:php)?[sS]*??>/gi;
return str.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
return allow.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
});
}
var str2 = strip_tags(as, '<select>');
console.log(str2);