创建一个div对象 通过innerhtml赋值,在这里出现了这种怪问题,请问谁发生过类似问题?
给dim 赋值之后,再查看,获得的值和赋值不一样,难道是之前的html里面已经结构乱掉了,影响了这里么?
谁有明确的答案??100 分 ,绝对结贴

解决方案 »

  1.   

    2个else中执行的同一段代码还是。?
    可以多贴点代码
      

  2.   

    这情况怎么看呢,反正我没遇到过,
    你的代码这么少,只能说the_desc在哪个地方,值已经改变了!
      

  3.   

    1 JS是直直的运行下来的
    2 上面那个tip 是赋值前 the_desc的值
    3 下面那个是div innerhtml 赋值后,div.innerhtml的值显然两个不一样,不一样在哪儿,
        the_desc的值
        <a href='http://news.163.com/special/000113C4/weekinpicture.html'>111111111111</a>    div.innerhtml的值
         111111111111</a>
    看出问题来了吧,这个是非常奇怪和少见的问题。坐等高人
      

  4.   

    应要求将这部分代码贴上
    GRulerControl.prototype.CreatePicture_MouseoverInfo = function(er) {
        var the_div = document.createElement("div");
        //div.innerHTML = er.MapSharp.Desc;
        //var desc_dom = $(er.MapSharp.Desc);
        //$(div).append(er.MapSharp.Desc);
        var the_desc = this.CheckHTML(er.MapSharp.Desc);
        if (the_desc.split(':')[0] == "src") {
            var src = the_desc.substring(the_desc.indexOf("src") + 4);
            var the_iframe = document.createElement("iframe");
            the_iframe.src = src;
            the_div.appendChild(the_iframe);
        }
        else {
            the_div.innerHTML = the_desc;
        }
        return the_div;
    }
      

  5.   

    你在外面加个标签试下看,有可能是前面的标签没关闭
    the_div.innerHTML = "<span> + the_desc + "</span>";
      

  6.   

    GRulerControl.prototype.CreatePicture_MouseoverInfo
    这个方法是不是当鼠标over 是就会触发,可能此时改变了src的值了?
      

  7.   


    尽量少用innerHTML,有时候没有转义也会导致赋值操作和取值操作的html值不一样的
    如:innerHTML = "<script>var i =0;</script>";
    innerHTML ="<option value='1'>test one</option>";
    这2个执行后的内容都不是这样的,只有一半;前面部分标签不见了;
    原因就是部分标签是关键字导致赋值无效
    如果用创建dom的方法就不同了
    如果要插入一个链接
    这样: var link = createElement("a");
    link.setAttribute("href","#");
    var text = createTextNode("click link");
    link.appendChild(text);
    document.byod.appendChild(link);
    这样就创建了一个a标签的链接了
      

  8.   

    IBM_hoojo,我也觉着是这个问题,但是你运行这段代码你会发现,用innerhtml赋值是没有问题的。
    所以我觉着肯定是哪里出了问题,而且这个问题应该是人为的,我就想找到这个错误在哪儿。页面地址
    http://119.167.225.131:1234/test.html________________________________________________________________
    <!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">
    <body>    <script>        var the_div = document.createElement("div");
            the_div.innerHTML = "<a href='http://news.163.com/special/000113C4/weekinpicture.html'>111111111111</a>";
            alert(the_div.innerHTML);
     
            the_div.innerHTML = "<div style='width:300px;height:300px;border:1px solid red;'>111111111111111111</div>";
            alert(the_div.innerHTML);
     
            the_div.innerHTML = "<a href='http://www.163.com'>111111111111111111</a>";
            alert(the_div.innerHTML);
        </script>
    </body>
    </html>
      

  9.   

    创建之后,先不要innerHTML,先挂靠的一个节点上去,再innerHTML; 如果猜测没错,这个涉及到底层处理机制,换言之,你换ff看看,或者chrome应该可以得到不同结果
      

  10.   

    如果你不想挂靠,a 用createelement,然后挂靠到div
      

  11.   

    代码中的div 就是createElement生成的。
    第二行var the_div = document.createElement("div");
    我一直怀疑是原先里面的代码乱套了所以造成这样。但是我又搞不出到底哪儿乱套了,真闹人。
      

  12.   

    看看这个页面
    http://119.167.225.131:1234/test3.html
    <!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">
    <body>
    <div id="div1"></div>
        <script>
            var the_div = document.getElementById("div1");
            the_div.innerHTML = "<a href=\"http://news.163.com/special/000113c4/weekinpicture.html\" >111111111111</a>";
            alert(the_div.innerHTML);
        </script>
    </body>
    </html>alert 出来是结果是错误的,寻求高手解释
      

  13.   

    重新修改了test3  ,错误已经缩小到这个范围了,求高人指点迷津,感激涕零啊http://119.167.225.131:1234/test3.html<html>
    <body>
    <div id="div1"></div>
        <script type="text/javascript">
            var the_div = document.getElementById("div1");
            the_div.innerHTML = "<a href=\"http://news.163.com/special/000113c4/weekinpicture.html\" >111111111111</a>";
            alert(the_div.innerHTML);        the_div.innerHTML = "<a href='http://news.163.com/special/000113c4/weekinpicture.html' >111111111111</a>";
            alert(the_div.innerHTML);        the_div.innerHTML = "<a href=http://news.163.com/special/000113c4/weekinpicture.html >111111111111</a>";
            alert(the_div.innerHTML);        the_div.innerHTML = "<a >2</a>";
            alert(the_div.innerHTML);        the_div.innerHTML = "<a onclick='alert(1);'>2</a>";
            alert(the_div.innerHTML);    </script>
    </body>
    </html>
      

  14.   

    你的代码有问题, 问题在<a href 的位置, a 和 h 之间的那个空白字符有问题, 你用ultraEdit之类的工具进入16进制看看就知道了. 那个不是正常的空格. 
      

  15.   


    用UE看了下,变成?号了
    代码就成:the_div.innerHTML = "<a?href=\"http://news.163.com/special/000113c4/weekinpicture.html\" >111111111111</a>";
            alert(the_div.innerHTML);
    弹出来就是111111111111</a>了...
      

  16.   

    的确是你说的这样。我检查了代码,是代码传送的xml经过XmlElement解析后,原先的&nbsp;我想当然的认为会转换成空格,实际上也是转换成了空格,但不是我期待的空格,   32和160 都是空格。这里转换成了160 而后面就将 <a?href=\"http://news.163.com/special/000113c4/weekinpicture.html\"
    这一大长串都当作一个tag来处理,所以出现这种情况。
    解决办法是在页面里写了一个attrValue.Replace(' ', ' ');    160空格转换成32空格
    问题解决了,谢谢细心的Free_Wind22和zx119koko,看来有句话是正确的,出错的总是人,不是电脑 :<