html 中的双引号和单引号的问题
<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中的双引号替换成",但是这么做一来很麻烦,二来也不符合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中有双引号,他就在外面加单引号,如果既有双引号也有单引号,他就把双引号用转义"代替,外面加双引号。
他自己倒是处理的很好。
[[it] 本帖最后由 weitang 于 2009-8-4 17:08 编辑 [/it]]
[ 本帖最后由 weitang 于 2009-8-14 09:30 编辑 ]