先看现象:
<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中正常。

解决方案 »

  1.   

    呵呵,有点儿意思,俺去 Google Search
      

  2.   


    <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个没变
      

  3.   

    Search Over确实是个 BUG!解决方案
    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>
      

  4.   


    呵呵 这个是老BUG了 只要在innerHTML前加 ''+转下就可以了.
      

  5.   


    function button1Click() {
    if(/*@cc_on!@*/0){
     document.getElementById("a_test1").href = ' ' + "http://blog.csdn.net/zswang";
    }
        alert(document.getElementById("a_test1").innerHTML);
    }
      

  6.   

    确实,顺便发个firefox下的小BUG<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <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>
      

  7.   


    楼上的这个BUG也是早前的BUG 但一般这种BUG可以避免..<a>标签里嵌套<div>本身就是不符合语义的
      

  8.   


    不知道BUG该怎么划界限.但我认为是个BUG,是因为人为的语义松散+FF对WEB标准的执行力度造成的人为BUG....