先看现象:
<html>
<body>
<a id="a_test1" href="http://blog.csdn.net">[email protected]</a>
<a id="a_test2" href="http://blog.csdn.net">hello#163.net</a>
<input type="button" onclick="button1Click()" value="测试1" />
<input type="button" onclick="button2Click()" value="测试2" />
<script type="text/javascript">
function button1Click() {
document.getElementById("a_test1").href = "http://blog.csdn.net/zswang";
alert(document.getElementById("a_test1").innerHTML);
}
function button2Click() {
document.getElementById("a_test2").href = "http://blog.csdn.net/zswang";
alert(document.getElementById("a_test2").innerHTML);
}
</script>
</body>
</html>
测试1
输出:http://blog.csdn.net/zswang测试2
输出:hello#163.net这是为什么呢?就是文本存在“@”字符导致。firefox中正常。
<html>
<body>
<a id="a_test1" href="http://blog.csdn.net">[email protected]</a>
<a id="a_test2" href="http://blog.csdn.net">hello#163.net</a>
<input type="button" onclick="button1Click()" value="测试1" />
<input type="button" onclick="button2Click()" value="测试2" />
<script type="text/javascript">
function button1Click() {
document.getElementById("a_test1").href = "http://blog.csdn.net/zswang";
alert(document.getElementById("a_test1").innerHTML);
}
function button2Click() {
document.getElementById("a_test2").href = "http://blog.csdn.net/zswang";
alert(document.getElementById("a_test2").innerHTML);
}
</script>
</body>
</html>
测试1
输出:http://blog.csdn.net/zswang测试2
输出:hello#163.net这是为什么呢?就是文本存在“@”字符导致。firefox中正常。
<html>
<body>
<a id="a_test1" href="http://blog.csdn.net">[email protected]</a>
<a id="a_test2" href="http://blog.csdn.net">hello#163.net</a>
<input type="button" onclick="button1Click()" value="测试1" />
<input type="button" onclick="button2Click()" value="测试2" />
<script type="text/javascript">
function button1Click() {
document.getElementById("a_test1").href = "http://blog.csdn.net/zswang";
alert(document.getElementById("a_test1").innerHTML);
alert(document.getElementById("a_test1").href);//
}
function button2Click() {
document.getElementById("a_test2").href = "http://blog.csdn.net/zswang";
alert(document.getElementById("a_test2").innerHTML);
alert(document.getElementById("a_test1").href);//
}
</script>
</body>
</html>有意思,只要*@*就是这样,而且他们的href也不一样,第2个没变
L@_@K
<html>
<body>
<a id="a_test1" href="http://blog.csdn.net">[email protected]</a>
<a id="a_test2" href="http://blog.csdn.net">hello#163.net</a>
<input type="button" onclick="button1Click()" value="测试1" />
<input type="button" onclick="button2Click()" value="测试2" />
<script type="text/javascript">
function IsIE() {
if (window.navigator.appName == "Microsoft Internet Explorer")
return true;
else
return false;
}
function setHref(sId, hrefStr) {
var link = document.getElementById(sId);
if (link && IsIE())
link.href = " " + hrefStr;
else
link.setAttribute("href", hrefStr);
}
function button1Click() {
setHref("a_test1", "http://blog.csdn.net/zswang")
alert(document.getElementById("a_test1").innerHTML);
}
function button2Click() {
setHref("a_test2", "http://blog.csdn.net/zswang")
alert(document.getElementById("a_test2").innerHTML);
}
</script>
</body>
</html>
呵呵 这个是老BUG了 只要在innerHTML前加 ''+转下就可以了.
function button1Click() {
if(/*@cc_on!@*/0){
document.getElementById("a_test1").href = ' ' + "http://blog.csdn.net/zswang";
}
alert(document.getElementById("a_test1").innerHTML);
}
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Firefox下innerHTML的一个BUG</title>
<style type="text/css">
a { display: block; border: 1px solid red;}
div { display: inline; border: 1px solid red;}
</style>
</head>
<body>
<a href="javascript:change();">change<div id="count">20</div>aaa</a>
<script type="text/javascript">
function change() {
var count = document.getElementById('count');
var c = count.innerHTML;
var page = c + 1;
count.innerHTML = page;
alert(page);
}
</script>
</body>
</html>
楼上的这个BUG也是早前的BUG 但一般这种BUG可以避免..<a>标签里嵌套<div>本身就是不符合语义的
不知道BUG该怎么划界限.但我认为是个BUG,是因为人为的语义松散+FF对WEB标准的执行力度造成的人为BUG....