本帖最后由 siaosa 于 2014-01-10 10:06:50 编辑

解决方案 »

  1.   

    我这里只有“/”消失了,应该是在取没有闭合标签的html时默认就没有“/”,况且最初html中input、br之类就都没有闭合的,所以这个应该是正常情况。<div id="div1"><input value="aa" /></div>
    <script type="text/javascript">
      alert($("#div1")[0].innerHTML);//一样是没有
    </script>
      

  2.   

    不是说innerHTML符合W3C标准吗?
    我查了W3C标准的input是 />闭合的
      

  3.   

    这样看来。这一句
    obj.innerHTML = htm;
    就不是赋值这么简单。应该还有其他的东西要做,
      

  4.   

    <input value=\"aa\" />这就是一个input标签啊,肯定解析的时候不会显示/>啊
      

  5.   

    测试结果显示只是少了“/”,少了“/”再正常不过了,少了“/>”就不科学。
    如果你要问为什么会少了“/”?其实这个也很好解释。
    首先你思考一个问题:
    java文件编译成class后再反编译成java文件,此时的java文件会和class一模一样吗?
    答案很显然:不会。
    那么这个问题也很好解释,一个input标签同样会别浏览器解析成input对象(要不我们怎么能在页面上看到文本框效果?),在具体的说,整个页面会被解析成一棵dom树。
    接下来我们需要思考另一个问题:innerHTML属性是去查询最开始的浏览器解析前的源页面呢?还是从dom中获取它内部的对象并使用toString()(当然,这个toString是比喻义了)将其打印出来呢?
    其实这个问题也好解释:既然我们都说innerHTML是一个属性了(调用它的本身就是一个对象,对象本身就有值,那他还有什么理由去查询源页面呢?就好比执行类的方法时,有必要去查看java源文件的内容吗?)
    在比如,htm="<input value=\"aa\" /><span>123"; ,你看看效果。
      

  6.   

    Modifying innerHTML causes the content to be re-parsed and DOM nodes to be recreated不知道,有没有高人,指出要害。具体是那些事件。