注册 登录
编程论坛 JavaScript论坛

html 中的双引号和单引号的问题

weitang 发布于 2009-08-04 16:57, 2223 次点击
<html>
<body>
<script>
function test(str){
  alert(str);
}

function mytest(){
  var str = "'";
  var htm = "<input type=\"button\" value=\"test\" onclick=\"test('"+str+"')\" />";
  alert(htm);
  document.getElementById("testdiv").innerHTML=htm;
}
</script>
<div id="testdiv"></div>
<button type="button" onclick="mytest()">hello</button>
</body>
</html>

当点击hello按钮后,再点test按钮会报错,因为mytest函数中的str变量有单引号,我把str中的单引号用什么转义符替换才能正确运行?

上面的写法,如果改成
var htm = "<input type=\"button\" value=\"test\" onclick=test(\""+str+"\") />";
去掉了onclick=后面的双引号,因该就不会有错。
如果str中有双引号的话,还要把str中的双引号替换成&quot;,但是这么做一来很麻烦,二来也不符合w3c的标准。

在IE中,我做了个试验
<script>
  function test(){
      document.getElementById("btn").value="\"";
      alert(document.getElementById("btn").outerHTML);
      document.getElementById("btn").value="'";
      alert(document.getElementById("btn").outerHTML);
      document.getElementById("btn").value="\"'";
      alert(document.getElementById("btn").outerHTML);
  }
</script>
<input id="btn" type="button" value="aaaa" onclick="test()" />
浏览去打出的html属性都一般都不带双引号,如果value中有单引号,他就在外面加双引号,如果value中有双引号,他就在外面加单引号,如果既有双引号也有单引号,他就把双引号用转义&quot;代替,外面加双引号。
他自己倒是处理的很好。

[[it] 本帖最后由 weitang 于 2009-8-4 17:08 编辑 [/it]]

[ 本帖最后由 weitang 于 2009-8-14 09:30 编辑 ]
2 回复
#2
Fieldens2009-08-04 20:28
\'
#3
weitang2009-08-14 09:34
还是不行,试一下就知道了,除非你把str写成\\',但是这也太。。。。。
1