Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式替换html脚本标记,但一种类型除外_Javascript_Html_Regex_Replace - Fatal编程技术网

Javascript 正则表达式替换html脚本标记,但一种类型除外

Javascript 正则表达式替换html脚本标记,但一种类型除外,javascript,html,regex,replace,Javascript,Html,Regex,Replace,我需要将所有脚本标记()替换为空白,但特定类型除外 我已经有了所有脚本标记的工作 var x = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi; y.replace(x, ""); var x=/此代码将捕获所有标记,以便您可以对它们进行迭代(循环)。我将此配置为将它们全部删除,但您可以轻松地将其包装在if条件中 按照这个例子 var all = document.getElemen

我需要将所有脚本标记(
)替换为空白,但特定类型除外

我已经有了所有脚本标记的工作

var x = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;

y.replace(x, "");

var x=/此代码将捕获所有
标记,以便您可以对它们进行迭代(循环)。我将此配置为将它们全部删除,但您可以轻松地将其包装在if条件中

按照这个例子

var all = document.getElementsByTagName("script");
for (var i=0; i < all.length; i++) {
    var all_id = all[i].id;
    if (all_id!=="xyz") {
      all[i].parentNode.removeChild(all[i]);
    }
}
var all=document.getElementsByTagName(“脚本”);
对于(变量i=0;i
。。。更具可读性

var all = document.getElementsByTagName("script");
for (var i=0; i < all.length; i++) {
    var all_id = all[i].id;
    if (all_id==="xyz") {
      // DO NOTHING IF ID==="xyz"
    } else {
      all[i].parentNode.removeChild(all[i]);
    }
}
var all=document.getElementsByTagName(“脚本”);
对于(变量i=0;i
请注意,一旦
进入了#文档,就会对其进行解释,因此即使您将其删除,代码仍然存在。在将其插入主文档之前,您可能需要创建一个#文档片段来解释HTML并在那里应用所需的转换


您可以使用
document.querySelectorAll
:not
查找异常节点,然后对它们执行一些操作

var elms = document.querySelectorAll('script:not(#xyz)'), i = elms.length;
while (i-->0) {
    elms[i].parentNode.removeChild(elms[i]);
}
使用jQuery:

console.group('All with[id]attr');
$('script')。不是('[id]')。每个(函数(){
log('Removed:',this);
这个。删除();
});
$('script')。每个(函数(){
console.log('keeped:',this);
});
console.groupEnd();
console.group('Only[id=test]');
$('script')。不是('[id=test]')。每个(函数(){
log('Removed:',this);
这个。删除();
});
$('script')。每个(函数(){
console.log('keeped:',this);
});
console.groupEnd()


这不是正则表达式的好用法。您可以遍历所有脚本标记并删除没有给定id的标记。遍历DOM,然后
document.getElementsByTagName('script')[0]。id='xyz'。请注意,每页只能有一个id。使用
Element.className='xyz'来分配HTML类属性。我如何使用ajax响应来完成这项工作?我认为,漫游DOM不是一个选项。1+但是挑剔,
i-->0
似乎是一个无法抗拒的箭头操作符<代码>i-->0
0
可能更清晰。