我正在尝试选择正文中的所有标记但想要排除视频标记这是我的代码到目前为止我不知道如何实现排除 - 任何建议和示例都将非常感激...... < / p>
修订(完整)代码:
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;
}
答案 0 :(得分:3)
CSS有一个:not
pseudoclass,它接受标签选择器之类的简单选择器。所以
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);
});
&#13;
<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>
&#13;
答案 1 :(得分:-1)
此代码与PHP strip标记功能相同。 Strip function。检查一下。
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 = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/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);