Javascript 将所有使用单引号的html属性定义替换为双引号
我有一个html字符串,我想用单引号和双引号替换设置的html属性的任何实例 例如,我想替换Javascript 将所有使用单引号的html属性定义替换为双引号,javascript,jquery,dom,Javascript,Jquery,Dom,我有一个html字符串,我想用单引号和双引号替换设置的html属性的任何实例 例如,我想替换 <script src='foo.js'></script> 与 但是,我希望这样做不会影响javascript语句或html文本中的任何单引号 乙二醇 var foo='67'; 应该不受影响,并且 <div id='foo'> 'hi' </div> “你好” 应该成为 <div id="foo"> 'hi' </di
<script src='foo.js'></script>
与
但是,我希望这样做不会影响javascript语句或html文本中的任何单引号
乙二醇
var foo='67';
应该不受影响,并且
<div id='foo'> 'hi' </div>
“你好”
应该成为
<div id="foo"> 'hi' </div>
“你好”
有什么简单的方法可以做到这一点吗
对于给定的元素,使用jquery选择它,然后读取它的outerHTML可以做到这一点,但我想一次对整个html页面执行这一操作
谢谢 试试这个:
var str = "<br style = 'width:100px'/> test link<a href=\"http://www\"></a>";
var regex = /<\w+\s*(\w+\s*=\s*(['][^']*['])|(["][^"]*["]))*\s*[\/]?>/g;
var rstr = str.replace(regex, function($0,$1,$2){
return $0.replace($2, $2.replace(/'/g, '"'));
});
console.log('replaced string = ' + rstr);
var str=“
测试链接”;
var regex=/回答了我自己的问题,因为我认为最简单的解决方案是这把小提琴中显示的内容,不需要jquery或regexp:
var htmlString=
'' +
'' +
'' +
'' +
'' ;
document.getElementById('foo')。innerHTML=htmlString;
log(document.getElementById('foo').outerHTML);
基本上,您只需要将html元素的内部html设置为不带html标记的html字符串,然后将html元素输出到外部html
我认为这比使用regexp要简单一些,尽管这是一个很棒的regexp Mike:)它需要非常规则的表达式,而且,你最好希望你的HTML格式正确。outerHTML?那么你是在浏览器中操纵HTML?你想达到什么目的?我很好奇:你为什么要这样做?“我想一次对整个html页面执行此操作”-您的意思是要对已加载到浏览器中的页面的html执行此操作吗?那么,当两个引号都有效时,将单引号更改为双引号有什么意义?也许,如果您展示Ajax成功处理程序的JavaScript代码,它将为人们提供一些可以使用的东西。
<div id="foo"> 'hi' </div>
var str = "<br style = 'width:100px'/> test link<a href=\"http://www\"></a>";
var regex = /<\w+\s*(\w+\s*=\s*(['][^']*['])|(["][^"]*["]))*\s*[\/]?>/g;
var rstr = str.replace(regex, function($0,$1,$2){
return $0.replace($2, $2.replace(/'/g, '"'));
});
console.log('replaced string = ' + rstr);
<html id="foo"></html>
var htmlString =
'<head>' +
'<script type="text/javascript" src=\'main.js\'></scr' + 'ipt>' +
'</head>' +
'<body onload=\'onLoad()\'>' +
'</body>' ;
document.getElementById('foo').innerHTML = htmlString;
console.log(document.getElementById('foo').outerHTML);